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 <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

const int N = 30100;
const int LOG = 15;
const int C = 5;

const ll MAX = (ll)2e18 ;

vector<int> E[N][C];
ll W[N][C];
int P[N];

ll add(ll a, ll b){
    return min(a + b, MAX);
}


ll pf[C][N];
ll cmp[C][N][LOG];

void solve(){
    int n, c, q;
    cin >> n >> c >> q;
    for(int i = 1; i <= n + 1; i ++ ){
        for(int j = 0 ; j <= c; j ++ ){
            E[i][j].clear();
            W[i][j]=0;
            pf[j][i] = 0ll;
            cmp[j][i][0] = 0ll;
        }
    }
    for(int i = 1; i <= n; i ++ ){
        cin >> P[i];
    }
    for(int i = 0; i <= c; i ++ ){
        W[n + 1][i] = 1;
    }
    for(int i = n; i >= 1; i -- ){
        vector<pii> ord;
        for(int j = 0 ; j <= c; j ++ ){
            if(i + j <= n){
                ord.push_back(mp(P[i + j], j));
            }
        }
        sort(ord.begin(), ord.end());
        for(auto x : ord){
            for(int j = 0 ; j <= c; j ++ ){
                if(j + x.se > c) continue;
                E[i][j].push_back(x.se);
                W[i][j] = add(W[i][j], W[i + x.se + 1][j + x.se]);
            }
        }
    }
    ll w;
    for(int v = 0; v <= c; v ++ ){
        for(int i = 1; i <= n; i ++ ){
            pf[v][i] = pf[v][i - 1];
            w = 0;
            for(auto x : E[i][v]){
                if(x == 0) {
                    w = W[i + 1][v];
                    break;
                }
                pf[v][i] = add(pf[v][i], W[i + x + 1][v + x]);
            }
            cmp[v][i][0] = add(pf[v][i], w);
        }
    }
    for(int lg = 1; lg < LOG; lg ++ ){
        for(int v = 0; v <= c; v ++ ){
            for(int i = 1; i <= n; i ++ ){
                if((i + (1 << lg) - 1) > n) continue;
                cmp[v][i][lg] = min(cmp[v][i][lg-1], cmp[v][i+(1<<(lg-1))][lg - 1]);
            }
        }
    }
    int pi;
    ll qi;
    int ci, cj;
    int ai, aj;
    int sol;
    int nx;
    int tat;
    for(int iq = 1; iq <= q; iq ++ ){
        cin >> pi >> qi;
        if(W[1][0] < qi) {
            cout << "-1\n";
            continue;
        }
        sol = -1;
        ci = 1;
        cj = 0;
        while(ci <= n){
            if(pf[cj][ci] - pf[cj][ci - 1] < qi && cmp[cj][ci][0] >= qi + pf[cj][ci-1]){
                nx = ci;
                for(int j = LOG - 1; j >= 0 ; j -- ){
                    tat = (nx + (1 << j));
                    if(tat > n + 1) continue;
                    if(pf[cj][tat - 1] - pf[cj][ci - 1] < qi && cmp[cj][nx][j] >= qi + pf[cj][ci-1]){
                        nx = tat;
                    }
                }
                qi -= pf[cj][nx-1]-pf[cj][ci-1];
                if(ci <= pi && pi < nx){
                    sol = P[pi];
                }
                ci = nx;
            }
            else{
                for(auto x : E[ci][cj]){
                    if(W[ci + x + 1][cj + x] < qi){
                        qi -= W[ci + x + 1][cj + x];
                    }
                    else{
                        ai = ci + x + 1;
                        aj = cj + x;
                        if(ci <= pi && pi < ai){
                            sol = P[ci + x - (pi - ci)];
                        }
                        ci = ai;
                        cj = aj;
                        break;
                    }
                }
            }
        }
        cout << sol << "\n";
    }
}

int main(){
    fastIO;
    int tc;
    cin >> tc;
    for(int it = 1; it <= tc; it ++ )
        solve();
    return 0;
}
