#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
inline int power(int a, int b) {
int x = 1;
while (b) {
if (b & 1) x *= a;
a *= a;
b >>= 1;
}
return x;
}
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
//_ ***************************** START Below *******************************
vector<int> a;
//* Guranteed only 1 soln exists, return index of pair x,y
//* Hence [ 3 2 3 x y z 3 ] => freq > 2 can't exist
//* Each element will appear once or twice only
//* If [ 3 3 4 ] k = 6
//* ans = ( firstOccurence , lastOccurence )
vector<int> consistency1(int n, int k) {
vector<int> b(a);
//* b[i] => {first, last} occurence (guranteed freq == 1 or == 2)
unordered_map<int,vector<int>> mp;
for(int i=0; i<n; i++){
mp[b[i]].push_back(i);
}
sort(begin(b), end(b));
int s = 0, e = n-1;
while(s<=e){
if(b[s] + b[e] == k){
if(b[s] == b[e]){
return {mp[b[s]][0], mp[b[e]][1]};
}
return {mp[b[s]][0], mp[b[e]][0]};
}
else if(b[s] + b[e] > k){
e--;
}
else s++;
}
return {};
}
//* Map alternative
//* Unique key => {ele , index }
//* Sort both {ele, index}[] by ele
vector<int> consistency2(int n, int k) {
vector<pair<int,int>> b;
for(int i=0; i<n; i++){
b.push_back({a[i], i});
}
sort(begin(b), end(b));
int i = 0, j = n-1;
while(i<=j){
int sum = b[i].first + b[j].first;
if(sum < k){
i++;
}
else if(sum > k){
j--;
}
else {
return {b[i].second, b[j].second};
break;
}
}
return {};
}
vector<int> practice(int n, int k) {
return {-1,-1};
}
void solve() {
int n, k;
cin >> n >> k ;
a.resize(n);
for(int i=0; i<n; i++) cin >> a[i];
auto ans1 = consistency1(n, k);
auto ans2 = consistency2(n, k);
cout << "(" << ans1[0] << "," << ans1[1] << ") , " << "(" << ans2[0] << "," << ans2[1] << ") , ";;
auto p = practice(n, k);
// cout << "(" << ans1[0] << "," << ans1[1] << ") , " << "(" << p[0] << "," << p[1] << ") , ";;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQppbmxpbmUgaW50IHBvd2VyKGludCBhLCBpbnQgYikgewogICAgaW50IHggPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHggKj0gYTsKICAgICAgICBhICo9IGE7CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKdmVjdG9yPGludD4gYTsKCgovLyogR3VyYW50ZWVkIG9ubHkgMSBzb2xuIGV4aXN0cywgcmV0dXJuIGluZGV4IG9mIHBhaXIgeCx5Ci8vKiAJSGVuY2UgWyAzICAyIDMgeCB5IHogMyBdID0+IGZyZXEgPiAyIGNhbid0IGV4aXN0Ci8vKiAJRWFjaCBlbGVtZW50IHdpbGwgYXBwZWFyIG9uY2Ugb3IgdHdpY2Ugb25seQoKLy8qIElmIFsgMyAgMyAgIDQgXSBrID0gNgovLyogCWFucyA9ICggZmlyc3RPY2N1cmVuY2UgLCBsYXN0T2NjdXJlbmNlICkKCnZlY3RvcjxpbnQ+IGNvbnNpc3RlbmN5MShpbnQgbiwgaW50IGspIHsKICAgIAogICAgdmVjdG9yPGludD4gYihhKTsKICAgIAogICAgLy8qIGJbaV0gPT4ge2ZpcnN0LCBsYXN0fSBvY2N1cmVuY2UgKGd1cmFudGVlZCBmcmVxID09IDEgb3IgPT0gMikKCXVub3JkZXJlZF9tYXA8aW50LHZlY3RvcjxpbnQ+PiBtcDsKCWZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkJbXBbYltpXV0ucHVzaF9iYWNrKGkpOwoJfQkKCXNvcnQoYmVnaW4oYiksIGVuZChiKSk7CgkKCWludCBzID0gMCwgZSA9IG4tMTsJCgl3aGlsZShzPD1lKXsKCQlpZihiW3NdICsgYltlXSA9PSBrKXsKCSAgICAgICAgaWYoYltzXSA9PSBiW2VdKXsKCSAgICAgICAgICAgIHJldHVybiB7bXBbYltzXV1bMF0sIG1wW2JbZV1dWzFdfTsKCSAgICAgICAgfQoJCQlyZXR1cm4ge21wW2Jbc11dWzBdLCBtcFtiW2VdXVswXX07CgkJfQoJCWVsc2UgaWYoYltzXSArIGJbZV0gPiBrKXsKCQkJZS0tOwoJCX0gICAKCQllbHNlIHMrKzsKCX0JCglyZXR1cm4ge307Cn0KCgoKLy8qIE1hcCBhbHRlcm5hdGl2ZSAKLy8qIFVuaXF1ZSBrZXkgPT4ge2VsZSAsIGluZGV4IH0gCi8vKiBTb3J0IGJvdGggICB7ZWxlLCBpbmRleH1bXSAgYnkgZWxlCgp2ZWN0b3I8aW50PiBjb25zaXN0ZW5jeTIoaW50IG4sIGludCBrKSB7CiAgICAKCXZlY3RvcjxwYWlyPGludCxpbnQ+PiBiOwoJZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKCSAgICBiLnB1c2hfYmFjayh7YVtpXSwgaX0pOwoJfQoJc29ydChiZWdpbihiKSwgZW5kKGIpKTsJCglpbnQgaSA9IDAsIGogPSBuLTE7CgkKCXdoaWxlKGk8PWopewoJICAgIGludCBzdW0gPSBiW2ldLmZpcnN0ICsgYltqXS5maXJzdDsKCSAgICBpZihzdW0gPCBrKXsKCSAgICAgICAgaSsrOwoJICAgIH0KCSAgICBlbHNlIGlmKHN1bSA+IGspewoJICAgICAgICBqLS07CgkgICAgfQoJICAgIGVsc2UgewoJICAgICAgICByZXR1cm4ge2JbaV0uc2Vjb25kLCBiW2pdLnNlY29uZH07CgkgICAgICAgIGJyZWFrOwoJICAgIH0KCX0JCgkKCXJldHVybiB7fTsKfQoKCgoKCgoKCgoKCgoKdmVjdG9yPGludD4gcHJhY3RpY2UoaW50IG4sIGludCBrKSB7CiAgICAKCXJldHVybiB7LTEsLTF9Owp9CgoKCgoKdm9pZCBzb2x2ZSgpIHsKICAgIAogICAgaW50IG4sIGs7CiAgICBjaW4gPj4gbiA+PiBrIDsKICAgIGEucmVzaXplKG4pOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSBjaW4gPj4gYVtpXTsKICAgIAogICAgYXV0byBhbnMxID0gY29uc2lzdGVuY3kxKG4sIGspOwogICAgYXV0byBhbnMyID0gY29uc2lzdGVuY3kyKG4sIGspOwogICAgY291dCA8PCAiKCIgPDwgYW5zMVswXSA8PCAiLCIgPDwgYW5zMVsxXSA8PCAiKSAsICIgPDwgICIoIiA8PCBhbnMyWzBdIDw8ICIsIiA8PCBhbnMyWzFdIDw8ICIpICwgIjs7CiAgICAKICAgIAogICAgYXV0byBwID0gcHJhY3RpY2Uobiwgayk7CiAgICAvLyBjb3V0IDw8ICIoIiA8PCBhbnMxWzBdIDw8ICIsIiA8PCBhbnMxWzFdIDw8ICIpICwgIiA8PCAgIigiIDw8IHBbMF0gPDwgIiwiIDw8IHBbMV0gPDwgIikgLCAiOzsKCn0KCgoKCgppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9