1
10 2 20
8 5 2 4 10 3 9 7 1 6
5 10
3 17
6 31
3 46
10 42
7 19
9 36
7 3
3 13
8 32
10 25
9 34
10 34
6 33
3 9
2 17
4 5
10 44
9 15
5 40
 1
47 1 47
40 45 19 10 44 33 47 12 2 46 16 23 3 14 21 28 31 42 22 18 35 38 24 25 36 32 4 34 5 20 37 39 6 9 1 7 29 8 17 27 30 11 13 41 15 43 26
39 25
41 24
32 30
10 6
30 13
24 35
41 17
31 31
9 44
21 8
43 23
8 5
29 13
8 4
47 20
22 10
37 27
17 39
43 23
14 42
46 19
43 24
30 31
24 35
31 13
31 32
20 9
3 2
20 9
14 7
7 3
21 36
32 30
47 19
11 43
6 2
31 31
26 12
47 20
2 1
40 24
16 40
45 21
36 28
36 28
17 38
30 31
 1
1 1 4
1
1 1
1 2
1 3
1 4
 1
10 1 1
10 4 6 5 7 9 8 1 3 2
6 10

3
2
7
10
6
7
7
7
5
1
6
6
1
9
4
4
4
1
1
3
 27
27
37
16
20
24
11
20
46
35
11
2
34
47
26
24
7
28
11
3
26
13
37
24
37
37
22
10
22
14
47
38
37
43
23
33
20
4
26
19
30
21
43
1
1
42
37
 1
-1
-1
-1
 9

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define endl '\n'
#define ll long long
#define pi pair<int, int>
#define f first
#define s second

const int mxn = 30005, mxk = 5;
int n, k, q;
int a[mxn], f[mxn][mxk][mxk];
ll dp[mxn][mxk], s[mxn][mxk];

void answer(){
	cin >> n >> k >> q;
	
	for(int i = 0; i < n; i++) cin >> a[i];
	
	for(int i = 0; i <= k; i++) dp[n][i] = 1, a[n + i] = n + i + 1;
	
	for(int i = n - 1; ~i; i--)
	for(int j = 0; j <= k; j++){
		dp[i][j] = 0;
		for(int l = 0; l <= j && i + l < n; l++){
			dp[i][j] += dp[i + l + 1][j - l];
		} 
	}
	
	for(int i = 0; i < n; i++)
	for(int j = 0; j <= k; j++){
		for(int l = 0; l <= j; l++) f[i][j][l] = l;
		sort(f[i][j], f[i][j] + j + 1, [&](int x, int y){
			return a[i + x] < a[i + y];
		});
	}
	
	for(int j = 0; j <= k; j++)
	for(int i = 1; i <= n; i++){
		s[i][j] = s[i - 1][j];
		for(int l = 0; l <= j && f[i - 1][j][l]; l++){
			s[i][j] += dp[i + f[i - 1][j][l]][j - f[i - 1][j][l]];
		}
	}
	
	while(q--){
		ll w, z;
		cin >> w >> z;
		w--, z--;
		
		if(z >= dp[0][k]){
			cout << -1 << endl;
			continue;
		}
		
		int x = 0, y = k, ret = 0;
		while(!ret){
			for(int i = 0; i <= y; i++){
				int v = f[x][y][i];
				if(z >= dp[x + v + 1][y - v]){
					z -= dp[x + v + 1][y - v];
				}else{
					if(v){
						if(x + v < w) x += v + 1, y -= v;
						else ret = a[2 * x + v - w];
					}else{
						int l = ++x, r = w + 2;
						while(r - l > 1){
							int mid = (l + r) / 2;
							if(s[mid][y] - s[x][y] <= z && s[mid][y] - s[x][y] + dp[mid][y] > z) l = mid;
							else r = mid;
						}	
						z -= s[l][y] - s[x][y], x = l;
						if(x > w) ret = a[w];
					}
					break;
				}
			}
		}
		
		cout << ret << endl;
	}
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int t;
	cin >> t;
	
	for(int i = 0; i < t; i++) answer();

	return 0;
}