#include #define REP(i,n) for(int i=0,i##_len=(n);i>N>>q; int sn=sqrt(N); vector a(N); vector> bukket(N,make_pair(1e9,-1)); REP(i, N){ cin >> a[i]; if(bukket[i/sn].first>a[i]) bukket[i/sn]=make_pair(a[i],i); } REP(i,q){ int query,l,r; cin>>query>>l>>r; l--;r--; if(query==1){ swap(a[l],a[r]); int lx=l/sn,rx=r/sn; bukket[lx].first=1e9;bukket[rx].first=1e9; for(int j=lx*sn;j<(lx+1)*sn;++j){ if(bukket[lx].first>a[j]) bukket[lx]=make_pair(a[j],j); } for(int j=rx*sn;j<(rx+1)*sn;++j){ if(bukket[rx].first>a[j]) bukket[rx]=make_pair(a[j],j); } } if(query==2){ pair ans=make_pair(1e9,-1); int lx=l/sn+1,rx=r/sn-1; for(int j=lx;j<=rx;++j){ if(bukket[j].first=rx*sn;--j){ if(a[j]