#include <bits/stdc++.h>
using namespace std;
int N, Q, Ti, Ki, Xi, A[100005], P[100005], BP[302], BPp[302], Stepen, BPc, NajvS, P1[100005][35];


int NajbliziStepen(int Br){
	int Step = 1;
	BPc = 1;
	while(Step <= Br){
		Step = Step << 1;
		BPc++;
	}
		
	Step = Step >> 1; BPc--;
	return Step;
}

void Priprema(){
	for(int j = 1; j <= N; j++){
		int temp = A[j];
		Stepen = NajbliziStepen(A[j]);
		while(temp){
			if(temp >= Stepen){
			BP[BPc]++;
			temp -= Stepen;
			}
			if(Stepen > 1){
			Stepen = Stepen >> 1;
		}
			BPc--;
		}	
	}
}

void Konstrukcija(){
	for(int i = 32; i >= 1; i--){
		if(BP[i]){
		NajvS = i;
		break;
		}
	}
	
		for(int i = 1; i <= N; i++){
		int temp = 1;
			for(int j = 1; j <= NajvS; j++){
				if(BP[j]){
				P[i] += temp;
				P1[i][j] = 1;
				BP[j]--;
				}
				temp = temp << 1;
			}
		}
			
}

void Izmena(int Ki, int Xi){
	int temp = A[Ki];
	Stepen = NajbliziStepen(temp);
	while(temp){
		if(temp >= Stepen){
			BP[BPc]--;
			temp -= Stepen;
		}
		Stepen >>= 1;
		BPc--;
	}
	
	A[Ki] = Xi;
	temp = A[Ki];
	Stepen = NajbliziStepen(temp);
	while(temp){
		if(temp >= Stepen){
			BP[BPc]++;
			temp -= Stepen;
		}
		Stepen >>= 1;
		BPc--;
	}
	Stepen = 1;
	for(int i = 1; i <= 32; i++){
		if(BP[i] < 0){
			for(int j = N; j >= 1; j--){
				if(P1[j][i]){
					BP[i] = 0;
					P1[j][i] = 0;
					P[j] -= Stepen;
					break;
				}	
			}	
		}else if(BP[i] > 0){
			for(int j = 1; j <= N; j++){
				if(!P1[j][i]){
					BP[i] = 0;
					P1[j][i] = 1;
					P[j] += Stepen;
					break;
				}
			}
			
		}
		Stepen <<=1;
	}
		
	
}


int main(){
	scanf("%d", &N);
	for(int i = 1; i <= N; i++){
		scanf("%d", &A[i]);
	}
	Priprema();
	
	Konstrukcija();
	scanf("%d", &Q);
	
	for(int i = 1; i <= Q; i++){
		scanf("%d", &Ti);
		if(Ti){
			scanf("%d %d", &Ki, &Xi);
			Izmena(Ki, Xi);
		}else{
			scanf("%d", &Ki);
			printf("%d\n", P[Ki]);
		}
	}
	
	return 0;
}