#include <bits/stdc++.h>
using namespace std;
multiset<int> st[1200007];
int a[1000007];
bool add(int id,int l,int r,int i,int x) {
  if (l>i||r<i) return 0;
  if (l==r&&r==i) {
    st[id].insert(x);
    return 1;
  }
  int g=(l+r)>>1;
  int ok=max(add(id<<1,l,g,i,x),add(id<<1|1,g+1,r,i,x));
  if (ok) st[id].insert(x);
  return ok;
}
bool del(int id,int l,int r,int i,int x) {
  if (l>i||r<i) return 0;
  if (l==r&&r==i) {
    if (st[id].find(x)!=st[id].end()){
      st[id].erase(st[id].find(x));
      return 1;
    }
    return 0;
  }
  int g=(l+r)>>1;
  int ok=max(del(id<<1,l,g,i,x),del(id<<1|1,g+1,r,i,x));
  if (ok) st[id].erase(st[id].find(x));
  return ok;
}
int get(int id,int l,int r,int u,int v,int x) {
  if (l>v||r<u) return 1e9+7;
  if (l>=u&&r<=v) {
    auto it=st[id].upper_bound(x);
    if (it==st[id].end()) return 1e9+7;
    return (*it);
  }
  int g=(l+r)>>1;
  return min(get(id<<1,l,g,u,v,x),get(id<<1|1,g+1,r,u,v,x));
}
int main() 
{
    ios_base::sync_with_stdio();
    cin.tie(0);
    int n,q;
    cin>>n>>q;
    while (q--) {
      int t;
      cin>>t;
      if (t==1) {
        int pos,val;
        cin>>pos>>val;
        add(1,1,n,pos,val);
      } else if (t==2) {
        int pos,val;
        cin>>pos>>val;
        del(1,1,n,pos,val);
      } else {
        int l,r,val;
        cin>>l>>r>>val;
        int ans=get(1,1,n,l,r,val);
        if (ans==1e9+7) 
          cout<<"NONE\n";
        else
          cout<<ans<<'\n';
      }
    }
    // cout << "Hello, World!";
    return 0;
}