#include #include using namespace std; using namespace atcoder; struct S{ int x, i; }; S op(S x, S y){ return x.x < y.x? x: y; } S e(){ return {INT_MAX, -1}; } int main(){ int N, Q; cin >> N >> Q; segtree seg(N); for (int i = 0; i < N; i++){ int x; cin >> x; seg.set(i, S{x, i+1}); } while (Q--){ int t, l, r; cin >> t >> l >> r; if (t == 1){ l--, r--; int lv = seg.get(l).x, rv = seg.get(r).x; seg.set(l, S{rv, l+1}); seg.set(r, S{lv, r+1}); } else{ l--; cout << seg.prod(l, r).i << endl; } } }