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;

#define sz(x) ((int) ((x).size()))
typedef long long ll;
typedef long double ld;

const ll inf = 1e18 + 10;

int t, n, c, q, p[40100], s[40100][5][5], ts[40100][5];
ll dp[40100][5], dpl[40100][5], dpr[40100][5], pdpl[40100][5];

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout << fixed << setprecision(10);
  cin >> t;
  while (t--) {
    cin >> n >> c >> q;
    for (int i = 0; i < n; i++)
      cin >> p[i];
    for (int j = 0; j <= c; j++)
      dp[n][j] = 1, dpl[n][j] = 0, dpr[n][j] = 1, ts[n][j] = 1, s[n][j][0] = 0;
    for (int i = n - 1; i >= 0; i--)
      for (int j = 0; j <= c; j++) {
        ts[i][j] = 0;
        dp[i][j] = 0;
        for (int k = 0; k <= j && i + k < n; k++)
          s[i][j][k] = k, ts[i][j]++;
        sort(s[i][j], s[i][j] + ts[i][j], [&](int si, int sj){return p[i + si] < p[i + sj];});
        for (int k = 0; k < ts[i][j]; k++) {
          if (s[i][j][k] == 0)
            dpl[i][j] = dp[i][j];
          dp[i][j] = min(dp[i][j] + dp[i + 1 + s[i][j][k]][j - s[i][j][k]], inf);
          if (s[i][j][k] == 0)
            dpr[i][j] = dp[i][j] - dpl[i][j];
        }
      }
    for (int i = 0; i < n; i++)
      for (int j = 0; j <= c; j++)
        pdpl[i][j] = dpl[i][j] + (i > 0 ? pdpl[i - 1][j] : 0);
    int qi;
    ll qj;
    for (int qq = 0; qq < q; qq++) {
      cin >> qi >> qj, qi--, qj--;
      if (qj >= dp[0][c]) {
        cout << "-1\n";
        continue;
      }
      int i = 0, j = c;
      while (i < n) {
        int l = i, r = n - 1;
        while (l < r) {
          int m = (l + r) / 2;
          ll pdplm = pdpl[m][j] - (i > 0 ? pdpl[i - 1][j] : 0);
          if (pdplm <= qj && qj < pdplm + dpr[m][j])
            l = m + 1;
          else
            r = m;
        }
        qj -= (l > 0 ? pdpl[l - 1][j] : 0) - (i > 0 ? pdpl[i - 1][j] : 0);
        i = l;
        if (i < n) {
          int k = 0;
          while (qj >= dp[i + 1 + s[i][j][k]][j - s[i][j][k]])
            qj -= dp[i + 1 + s[i][j][k]][j - s[i][j][k]], k++;
          int sh = s[i][j][k];
          int l = i, r = i + sh;
          if (l <= qi && qi <= r)
            qi = l + r - qi;
          i += sh + 1;
          j -= sh;
        }
      }
      cout << p[qi] << "\n";
    }
  }
}
