#include using namespace std; int main() { int n, q; if (!(cin >> n >> q)) return 0; vector> A; for (int i = 0; i < n; i++) { int a; cin >> a; A.push_back({a, i}); } vector> Q(q); int q1 = 0, q2 = 0; for (int i = 0; i < q; i++) { int t; cin >> t; if (t == 1) { int p, v; cin >> p >> v; Q[i] = {1, p - 1, v}; A.push_back({v, p - 1}); q1++; } else { int r; cin >> r; Q[i] = {2, r}; q2++; } } int total = n + q1; vector B(total); iota(B.begin(), B.end(), 0); sort(B.begin(), B.end(), [&](int i, int j) { return A[i].first < A[j].first; }); vector Q2_pos(q2), Ts(total, 0), Te(total, q2), A_i(n); iota(A_i.begin(), A_i.end(), 0); int q1_c = 0, q2_c = 0; for (int i = 0; i < q; i++) { if (Q[i][0] == 1) { int pos = Q[i][1]; Te[A_i[pos]] = q2_c; A_i[pos] = n + q1_c; Ts[A_i[pos]] = q2_c; q1_c++; } else { Q2_pos[q2_c] = Q[i][1]; q2_c++; } } const int INF = 1 << 30; vector Q2_p(q2, INF), Ans(q2, INF); for (int bi = 0; bi < total; bi++) { int i = B[bi]; int val = A[i].first; int pos = A[i].second; for (int qi = Ts[i]; qi < Te[i]; qi++) { if (pos < Q2_pos[qi]) { Ans[qi] = min(Ans[qi], val ^ Q2_p[qi]); Q2_p[qi] = val; } } } for (int i = 0; i < q2; i++) { cout << Ans[i] << endl; } return 0; }