const int MAXN=2005,MAXM=2e5+5,MAXQ=MAXN*MAXN/2+MAXM;
int n,lef[MAXN<<2],rig[MAXN<<2],s[MAXN<<2][MAXN<<2];
void pushup1D(int rt,int k){
s[rt][k]=max(s[rt][k<<1],s[rt][k<<1|1]);
}
void pushup2D(int rt,int k){
s[rt][k]=max(s[rt<<1][k],s[rt<<1|1][k]);
}
void build2D(int k,int L,int R){
lef[k]=L,rig[k]=R;
if(L==R)
return;
int M=L+R>>1;
build2D(k<<1,L,M);
build2D(k<<1|1,M+1,R);
}
void update1D(int rt,int k,int cl,int cr,int pos,int v){
if(cl==cr){
if(lef[rt]==rig[rt])
s[rt][k]=v;
else
pushup2D(rt,k);
return;
}
int cm=cl+cr>>1;
if(pos<=cm)
update1D(rt,k<<1,cl,cm,pos,v);
else
update1D(rt,k<<1|1,cm+1,cr,pos,v);
pushup1D(rt,k);
}
void update2D(int k,int x,int y,int v){
if(lef[k]==rig[k])
return update1D(k,1,1,n,y,v);
int mid=lef[k]+rig[k]>>1;
if(x<=mid)
update2D(k<<1,x,y,v);
else
update2D(k<<1|1,x,y,v);
update1D(k,1,1,n,y,v);
}
int query1D(int rt,int k,int cl,int cr,int ql,int qr){
if(ql<=cl&&cr<=qr)
return s[rt][k];
int cm=cl+cr>>1;
if(qr<=cm)
return query1D(rt,k<<1,cl,cm,ql,qr);
else if(ql>cm)
return query1D(rt,k<<1|1,cm+1,cr,ql,qr);
else
return max(query1D(rt,k<<1,cl,cm,ql,qr),query1D(rt,k<<1|1,cm+1,cr,ql,qr));
}
int query2D(int k,int lx,int rx,int ly,int ry){
if(lx<=lef[k]&&rig[k]<=rx)
return query1D(k,1,1,n,ly,ry);
int mid=lef[k]+rig[k]>>1;
if(rx<=mid)
return query2D(k<<1,lx,rx,ly,ry);
else if(lx>mid)
return query2D(k<<1|1,lx,rx,ly,ry);
else
return max(query2D(k<<1,lx,rx,ly,ry),query2D(k<<1|1,lx,rx,ly,ry));
}
LL pre[MAXN],ans[MAXM],ss[MAXQ];
struct Node{
LL val;
int lef,rig,idx;
bool operator < (const Node &b)const{
return val<b.val||(val==b.val&&idx<b.idx);
}
}node[MAXQ];
int main()
{
n=read_int();
int m=read_int(),q=0,mv=0;
_rep(i,1,n)pre[i]=read_int();
_rep(i,1,n)pre[i]+=pre[i-1];
_rep(i,1,m){
int ql=read_int(),qr=read_int();
LL qv=read_LL();
node[q++]=Node{qv,ql,qr,i};
}
_rep(i,1,n)_for(j,0,i){
node[q++]=Node{pre[i]-pre[j],j+1,i,0};
ss[++mv]=pre[i]-pre[j];
}
sort(node,node+q);
sort(ss+1,ss+mv+1);
mv=unique(ss+1,ss+mv+1)-ss;
build2D(1,1,n);
_for(i,0,q){
if(node[i].idx==0)
update2D(1,node[i].lef,node[i].rig,lower_bound(ss+1,ss+mv,node[i].val)-ss);
else
ans[node[i].idx]=query2D(1,node[i].lef,node[i].rig,node[i].lef,node[i].rig);
}
_rep(i,1,m){
if(ans[i]==0)
puts("NONE");
else
enter(ss[ans[i]]);
}
return 0;
}