#include <bits/stdc++.h>

using namespace std;
int N,Q;
int t,k,x;
int pom;
vector<int>A;
vector<int>cnt(17,0);
vector<vector<bool>>binBrojevi;
void binBrojeviFill(){
    vector<bool>bpom(16,false);
    binBrojevi.resize(N);
    fill(binBrojevi.begin(),binBrojevi.end(),bpom);
}
void ispis(int pos){
    cout<<"Ispis "<<pos<<"\n";
    for(int i=0;i<=16;i++){
        cout<<binBrojevi[pos][i]<<" ";
    }
    cout<<"\n";
}
void ispisCnt(){
    cout<<"Ispis cnt\n";
    for(int i=0;i<=16;i++){
        cout<<cnt[i]<<" ";
    }
    cout<<"\n";
}

void izvuciCifre(int a,int pos){
    //cout<<"Broj "<<x<<"\n";
    for(int i=16;i>0;i--){
        if(a/(1<<i)==1){
            cnt[i]++;
            binBrojevi[pos][i]=true;
            a=a-(1<<i);
        }
    }
    if(a==1){
        cnt[0]++;
        binBrojevi[pos][0]=true;
    }
}
void izvuciCifrePromena(int a,int pos){
    for(int i=16;i>0;i--){
        if(a/(1<<i)==1){
            if(binBrojevi[pos][i]==0){
                cnt[i]++;
                binBrojevi[pos][i]=true;

            }
            a=a-(1<<i);
        }
        else{
            if(binBrojevi[pos][i]==1){
                cnt[i]--;
                binBrojevi[pos][i]=false;
            }
        }
    }
    if(a==1){
        cnt[0]++;
        binBrojevi[pos][0]=true;
    }
}
void uradi0(){
    int res=0;
    for(int i=0;i<=16;i++){
        if(k<=cnt[i]){
            res+=(1<<i);
        }
    }
    cout<<res<<"\n";
}
void uradi1(){
    /*ispis(k-1);
    ispisCnt();*/
    A[k-1]=x;
    izvuciCifrePromena(x,k-1);
    if(binBrojevi[k-1][16]==1 && x/(1<<16)==0){
        binBrojevi[k-1][16]=0;
    }
    /*ispis(k-1);
    ispisCnt();*/
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin>>N;
    binBrojeviFill();
    for(int i=0;i<N;i++){
        cin>>pom;
        A.push_back(pom);
        izvuciCifre(pom,i);

        /*ispis(i);
        ispisCnt();*/
    }
    /*cout<<"\n";
    cout<<"\n";
    cout<<"\n";
    for(int i=0;i<=16;i++){
        cout<<cnt[i]<<" ";
    }
    cout<<"\n";*/
    cin>>Q;
    for(int i=0;i<Q;i++){
        cin>>t>>k;
        if(t==0){
            uradi0();
        }
        else{
            cin>>x;
            uradi1();
        }
    }
    return 0;
}