#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    ll n;

    cin >> n;
    vector<ll> A(n), jedinice(30);
    for(int i = 0; i < n; i++){
        cin >> A[i];
        for(int j = 0; j < 30; j++){
            if((1ll << j) & A[i])
                jedinice[j]++;
        }
    }
    vector<ll> poslednja_jedinica(30, -1);
    vector<ll> novi(n);
    for(int i = 0; i < n; i++){
        ll broj = 0;
        for(int j = 0; j < 30; j++){
            if(jedinice[j] > 0){
                broj += (1 << j);
                jedinice[j]--;
                poslednja_jedinica[j] = i;
            }

        }
        novi[i] = broj;
    }
    ll q;
    cin >> q;
    while(q--){
        int tip;
        cin >> tip;
        if(tip == 0){
            int k;
            cin >> k;
            k--;
            cout << novi[k] << endl;
        }
        else if(tip == 1){
            int k;
            ll x;
            cin >> k >> x;
            k--;
            for(int j = 0; j < 30; j++){
                bool bila_jedinica = ((1 << j) & A[k]);
                bool sad_je_jedinica = ((1 << j) & x);

                if(poslednja_jedinica[j] >= 0){
                    if(bila_jedinica && !sad_je_jedinica){
                        novi[poslednja_jedinica[j]] -= (1 << j);
                        poslednja_jedinica[j]--;
                    }
                }
                if(sad_je_jedinica && !bila_jedinica){
                        novi[poslednja_jedinica[j] + 1] += (1 << j);
                        poslednja_jedinica[j]++;
                    }

                sort(novi.begin(), novi.end(), greater<int>());

            }


        }
    }

    return 0;

}