← Home
write a go solution for Description:
This is the harder version of the problem. In this version, 1<=n,m<=2*10^5. You can hack this problem if you locked it. But you can hack the previous problem only if you locked both problems.

You are given a sequence of integers a=[a_1,a_2,...,a_n] of length n. Its subsequence is obtained by removing zero or more elements from the sequence a (they do not necessarily go consecutively). For example, for the sequence a=[11,20,11,33,11,20,11]:

- [11,20,11,33,11,20,11], [11,20,11,33,11,20], [11,11,11,11], [20], [33,20] are subsequences (these are just some of the long list);
- [40], [33,33], [33,20,20], [20,20,11,11] are not subsequences.

Suppose that an additional non-negative integer k (1<=k<=n) is given, then the subsequence is called optimal if:

- it has a length of k and the sum of its elements is the maximum possible among all subsequences of length k;
- and among all subsequences of length k that satisfy the previous item, it is lexicographically minimal.

Recall that the sequence b=[b_1,b_2,...,b_k] is lexicographically smaller than the sequence c=[c_1,c_2,...,c_k] if the first element (from the left) in which they differ less in the sequence b than in c. Formally: there exists t (1<=t<=k) such that b_1=c_1, b_2=c_2, ..., b_t-1=c_t-1 and at the same time b_t<c_t. For example:

- [10,20,20] lexicographically less than [10,21,1],
- [7,99,99] is lexicographically less than [10,21,1],
- [10,21,0] is lexicographically less than [10,21,1].

You are given a sequence of a=[a_1,a_2,...,a_n] and m requests, each consisting of two numbers k_j and pos_j (1<=k<=n, 1<=pos_j<=k_j). For each query, print the value that is in the index pos_j of the optimal subsequence of the given sequence a for k=k_j.

For example, if n=4, a=[10,20,30,20], k_j=2, then the optimal subsequence is [20,30] — it is the minimum lexicographically among all subsequences of length 2 with the maximum total sum of items. 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 Format:
The first line contains an integer n (1<=n<=2*10^5) — 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<=2*10^5) — 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 Format:
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.

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].. Output only the code with no comments, explanation, or additional text.