import sys input=lambda: sys.stdin.readline().rstrip() n,q=map(int,input().split()) A=[int(i) for i in input().split()] n0=2**(n-1).bit_length() INF=2**31-1 data=[INF]*(2*n0) # a_k の値を x に更新 def update(k,x): k+=n0-1 data[k]=x while k>=0: k=(k-1)//2 data[k]=min(data[2*k+1],data[2*k+2]) # 区間[l, r)の最小値 def query(l,r): L=l+n0;R=r+n0 s=INF while L>=1;R>>=1 return s D=dict() for i,a in enumerate(A): D[a]=i update(i,a) for _ in range(q): x,l,r=map(int,input().split()) if x==1: a,b=data[l-1+n0-1],data[r-1+n0-1] D[a],D[b]=r-1,l-1 update(l-1,b) update(r-1,a) else: print(D[query(l-1,r)]+1)