#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 1e5 + 100;

int n,q;
int numArray[MAX_N];
int cntArray[MAX_N]; // 2^30 = 10^9

// Pravi cnt array
void make()
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<32;j++) // 2^30 = 10^9
        {
            if(numArray[i] & (1<<j))
            {
                cntArray[j]++;
            }
        }
    }
}

// Updateuje cnt array
void update(int ind, int val)
{
    int prev = numArray[ind];
    numArray[ind] = val;

    for(int j=0;j<32;j++)
    {
        if(prev & (1<<j))
        {
            cntArray[j]--;
        }
        if(val & (1<<j))
        {
            cntArray[j]++;
        }
    }
}

// Vraca broj na ind indexu
int number(int ind)
{
    int rez = 0;

    for(int j=0;j<32;j++)
    {
        if(cntArray[j] >= ind)
        {
            rez += (1<<j);
        }
    }

    return rez;
}

int main()
{
    // Ulaz
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>numArray[i];
    }

    // Obrada
    make();

    // Ulaz + Izlaz
    cin>>q;
    for(int i=0;i<q;i++)
    {
        int t,k,x;

        cin>>t;
        if(t == 0)
        {
            cin>>k;

            cout<<number(k)<<endl;
        }
        else
        {
            cin>>k;
            cin>>x;

            update(k-1, x);
        }
    }

    return 0;
}