#include using namespace std; typedef long long ll; #define all(x) (x).begin(),(x).end() const int mod=998244353,MAX=1<<18,INF=1<<30; int n,dat[2*MAX-1],ans[2*MAX-1]; void init(int n_){ n=1; while(n=0;i--){ if(i>=n-1) ans[i]=i-(n-1); else{ if(dat[i*2+1]>dat[i*2+2]) ans[i]=ans[i*2+2]; else ans[i]=ans[i*2+1]; } } } void update(int k,int a){ k+=n-1; dat[k]=a; while(k>0){ k=(k-1)/2; if(dat[k*2+1]>dat[k*2+2]){ dat[k]=dat[k*2+2]; ans[k]=ans[k*2+2]; }else{ dat[k]=dat[k*2+1]; ans[k]=ans[k*2+1]; } } } int query(int a,int b,int k,int l,int r){ if(r<=a||b<=l) return -1; if(a<=l&&r<=b) return ans[k]; else{ int vl=query(a,b,2*k+1,l,(l+r)/2); int vr=query(a,b,2*k+2,(l+r)/2,r); if(vl==-1) return vr; if(vr==-1) return vl; if(dat[n-1+vl]>dat[n-1+vr]) return vr; return vl; } } int main(){ //std::ifstream in("text.txt"); //std::cin.rdbuf(in.rdbuf()); int N,Q;cin>>N>>Q; init(N); for(int i=0;i>a; update(i,a); } for(int i=0;i>a>>b>>c; if(a==1){ int d=dat[n-1+b-1],e=dat[n-1+c-1]; //cout<