#include using namespace std; struct SegTree{ int n; vector v; SegTree(int _n){ n=1; while(n<_n){ n*=2; } v.assign(n*2+10,INT_MAX); } void set(vector&vec){ for(int i=0;i0;i--){ v[i]=min(v[i*2],v[i*2+1]); } } void update(int k,int x){ k+=n; v[k]=x; k/=2; while(k){ v[k]=min(v[k*2],v[k*2+1]); k/=2; } } void swap(int a,int b){ int t=v[a+n]; update(a,v[b+n]); update(b,t); } int mi(int l,int r){ l+=n; r+=n; int ans=INT_MAX; while(l>n>>m; vector vec(n); for(int i=0;i>vec[i]; } SegTree tr(n); map ma; for(int i=0;i>a>>b>>c; b--;c--; if(a==1){ swap(ma[vec[b]],ma[vec[c]]); tr.swap(b,c); }else{ cout<