text: Thus, the answer to the request k_j=2, pos_j=1 is the number 20, and the answer to the request k_j=2, pos_j=2 is the number 30.Input The first line contains an integer n (1 ≤ n ≤ 100) — the length of the sequence a.The second line contains elements of the sequence a: integer numbers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 10^9).The third line contains an integer m (1 ≤ m ≤ 100) — the number of requests.The following m lines contain pairs of integers k_j and pos_j (1 ≤ k ≤ n, 1 ≤ pos_j ≤ k_j) — the requests.Output Print m integers r_1, r_2, ..., r_m (1 ≤ r_j ≤ 10^9) one per line: answers to the requests in the order they appear in the input.The value of r_j should be equal to the value contained in the position pos_j of the optimal subsequence for k=k_j.Examples Input 3 10 20 10 6 1 1 2 1 2 2 3 1 3 2 3 3 Output 20 10 20 10 20 10 Input 7 1 2 1 3 1 2 1 9 2 1 2 2 3 1 3 2 3 3 1 1 7 1 7 7 7 4 Output 2 3 2 3 2 3 1 1 3 Note In the first example, for a=[10,20,10] the optimal subsequences are: * for k=1: [20], * for k=2: [10,20], * for k=3: [10,20,10].# Solution # class SegmentTree(): # adapted from https://www.geeksforgeeks.org/segment-tree-efficient-implementation/ # def __init__(self,arr,func,initialRes=0): # self.f=func # self.N=len(arr) # self.tree=[0 for _ in range(2*self.N)] # self.initialRes=initialRes # for i in range(self.N): # self.tree[self.N+i]=arr[i] # for i in range(self.N-1,0,-1): # self.tree[i]=self.f(self.tree[i<<1],self.tree[i<<1|1]) # def updateTreeNode(self,idx,value): #update value at arr[idx] # self.tree[idx+self.N]=value # idx+=self.N # i=idx # while i>1: # self.tree[i>>1]=self.f(self.tree[i],self.tree[i^1]) # i>>=1 # def query(self,l,r): #get sum (or whatever function) on interval [l,r] inclusive # r+=1 # res=self.initialRes # l+=self.N # r+=self.N # while l<r: # if l&1: # res=self.f(res,self.tree[l]) # l+=1 # if r&1: # r-=1 # res=self.f(res,self.