from atcoder.segtree import SegTree from collections import defaultdict N,Q = list(map(int,input().split())) A = list(map(int,input().split())) place = defaultdict(int) for i in range(N):place[A[i]] = i T = SegTree(min,10**18,A[:]) for _ in range(Q): query = list(map(int,input().split())) if(query[0] == 1): _,l,r = query l -= 1;r -= 1 place[A[l]] = r place[A[r]] = l T.set(l,A[r]) T.set(r,A[l]) A[l],A[r] = A[r],A[l] else: _,l,r = query l -= 1;r -= 1 print(place[T.prod(l,r+1)] + 1)