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

//starusc
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
	int x=0,f=1,c=getchar();
	while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
	while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
	return f==1?x:-x;
}
const int N=3e4+4;
int n,c,Q,p[N],st[5][N],ed[5][N],C[N][5],a[6];
inline bool comp(int x,int y){
	return p[x]<p[y];
}
inline void solve(){
	n=read();c=read();Q=read();
	for(int i=1;i<=n;i++)p[i]=read();
	for(int j=0;j<=c;j++)
		for(int i=1;i<=n;i++){
			st[j][i]=st[j][i-1];
			for(int u=min(n,i+j);u>i;u--)if(p[u]<p[i]){
				st[j][i]+=C[n-u][j-u+i];
			}
			ed[j][i]=st[j][i]+C[n-i][j]-1;
		}
	for(int x,k,r,nw,v;Q--;){
		x=read();k=read();
		if(k>C[n][c]){puts("-1");continue;}
		r=c;nw=0;
		while(1){
			v=min(upper_bound(st[r]+1,st[r]+n+1,k+st[r][nw]-1)-st[r],
				  upper_bound(ed[r]+1,ed[r]+n+1,k+st[r][nw]-1,greater<int>())-ed[r]);
			if(v>x){cout<<p[x]<<"\n";break;}
			k-=st[r][v-1]-st[r][nw];//
			r=min(r,n-v);//
			for(int i=0;i<=r;i++)a[i]=v+i;
			sort(a,a+r+1,comp);
			for(int i=0;i<=r;i++){
				if(k<=C[n-a[i]][r-a[i]+v]){
					r-=a[i]-v;
					nw=a[i];
					break;
				}
				else k-=C[n-a[i]][r-a[i]+v];
			}
			if(nw>=x){cout<<p[nw-(x-v)]<<"\n";break;}
		}
	}
}
signed main(){
	for(int i=0;i<=4;i++)st[i][0]=C[0][i]=1;
	for(int i=1;i<N;i++){
		C[i][0]=1;
		C[i][1]=C[i][0]+(i-1);
		C[i][2]=C[i][1]+(i-1)*(i-2)/2;
		C[i][3]=C[i][2]+(i-1)*(i-2)/2*(i-3)/3;
		C[i][4]=C[i][3]+(i-1)*(i-2)/2*(i-3)/3*(i-4)/4;
	}
	for(int T=read();T--;)solve();
	return (0-0);
}