#include<iostream>  
#include<math.h>
#include<iomanip> 
#include<string>
#include<algorithm>
#include <vector>
#include<set>
#include<queue>  
#include<deque>
#include<stack>
#include<map>
#include<bitset>
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(),v.rend()
#define Lamine_YAMAL ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fx(n)  cout<<fixed<<setprecision(n)<<
#define pq_min priority_queue<int, vector<int>, greater<int>> ;
typedef long long ll;
typedef double ld;
using namespace std;
const int mod = 1e9 + 7;
const int sz = 2e5 + 50;
void _3OMDA() {
    int n, m, k;
    cin >> n >> m >> k; vector<int>v(n);
    multiset<int>s;  vector<int>res;
    for (int i = 0;i < n;i++) {
        cin >> v[i];
        if (i < m) 
            s.insert(v[i]);
    }
    res.push_back(*s.begin());
    s.erase(s.begin());

    for (int i = m;i < n;i++) {
        s.insert(v[i]);
        res.push_back(*s.begin());
        s.erase(s.begin());
    } 
    while (!s.empty()) {
        res.push_back(*s.begin());
        s.erase(s.begin());
    }
    cout << res[k -1];
}
signed main() {
    Lamine_YAMAL
        //freopen("mex.in", "r", stdin);
      int t = 1;
      cin >> t;
    for (int i = 0; i < t; i++) {
        _3OMDA();
    }
    return 0;
}