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>

#define fi first
#define se second
#define ll long long
#define dl double long

using namespace std;

const int N = 3e4 + 7;
const long long mod = 998244353;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int n,c,q;
int p[N];
ll d[N][5];

ll L[N][5];
ll R[N][5];

vector < int > v[N][5];

void solve()
{
    cin >> n >> c >> q;
    for( int i = 1; i <= n; i++ ){
        cin >> p[i];
    }
    for( int i = 0; i <= c; i++ )d[n + 1][i] = 1;
    for( int i = 0; i <= n; i++ ){
        for( int j = 0; j <= c; j++ ){
            L[i][j] = R[i][j] = 0;
            v[i][j].clear();
        }
    }
    for( int i = n; i >= 1; i-- ){
        for( int j = 0; j <= c; j++ ){
            d[i][j] = d[i + 1][j];
            vector < pair < int , int > > g;
            g.push_back({ p[i] , 0 });
            for( int h = 1; h <= j; h++ ){
                if( i + h <= n ){
                    g.push_back({ p[i + h] , h });
                    d[i][j] += d[i + h + 1][j - h];
                }
            }
            sort( g.begin() , g.end() );
            for( auto x : g ){
                v[i][j].push_back(x.se);
            }
        }
    }
    for( int i = 0; i <= c; i++ ){
        for( int j = 1; j <= n; j++ ){
            for( auto x : v[j][i] ){
                if( x == 0 ){
                    R[j][i] += d[j + 1][i];
                    break;
                }else{
                    L[j][i] += d[j + x + 1][i - x];
                    R[j][i] += d[j + x + 1][i - x];
                }
            }
        }
    }
    for( int i = 0; i <= c; i++ ){
        for( int j = 1; j <= n; j++ ){
            L[j][i] += L[j - 1][i];
        }
    }
    while( q-- ){
        int i;
        ll j;
        cin >> i >> j;
        if( j > d[1][c] ){
            cout << "-1\n";
            continue;
        }
        vector < pair < int , int > > seg;
        int st = 1;
        int nc = c;
        while( st <= n ){
            int l = st , r = n + 1;
            while( l < r ){
                int m = (l + r) / 2;
                if( L[m][nc] - L[st - 1][nc] < j && j <= L[m - 1][nc] - L[st - 1][nc] + R[m][nc] ){
                    l = m + 1;
                }else r = m;
            }
            if( l == n + 1 )break;
            j -= L[l - 1][nc] - L[st - 1][nc];
            st = l;
            for( auto x : v[st][nc] ){
                if( j > d[st + x + 1][nc - x] ){
                    j -= d[st + x + 1][nc - x];
                }else{
                    seg.push_back({ st , st + x });
                    st += x + 1;
                    nc -= x;
                    break;
                }
            }
        }
        vector < int > f;
        for( auto x : seg ){
            if( x.fi <= i && i <= x.se ){
                for( int h = x.fi; h <= x.se; h++ ){
                    f.push_back(p[h]);
                }
                i -= x.fi;
                break;
            }
        }
        if( f.empty() ){
            cout << p[i] << "\n";
            continue;
        }
        reverse( f.begin() , f.end() );
        cout << f[i] << "\n";
    }
}

int main()
{
    ios_base::sync_with_stdio(0);
    //freopen( "input.txt" , "r" , stdin );
    //freopen( "output.txt" , "w" , stdout );

    int T;
    cin >> T;
    while( T-- ){
        solve();
    }
}
