#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<vector<string>> input(n);
for(int i = 0; i < n; i++) {
string name;
int region, score;
cin >> name >> region >>score;
vector<string> v{name, to_string(region), to_string(score)};
input[i] = v;
}
sort(input.begin(), input.end(), [&](vector<string>& a, vector<string>& b) {
if(a[1] == b[1]) return a[2] > b[2];
return a[1] < b[1];
});
int regionCnt = 0;
for(int i = 0; i < n; i += regionCnt){
string firstCan = "", secondCan = "";
int ans1 = -1, ans2 = -1, ans3 = -1, currRegion = stoi(input[i][1]);
regionCnt = 0;
for(int j = 0; i+j < n && stoi(input[i+j][1]) == currRegion; j++) {
regionCnt++;
if(stoi(input[i+j][2]) > ans1) {
ans1 = stoi(input[i+j][2]);
firstCan = input[i+j][0];
}
else if(stoi(input[i+j][2]) > ans2) {
ans2 = stoi(input[i+j][2]);
secondCan = input[i+j][0];
} else if(stoi(input[i+j][2]) > ans3)
ans3 = stoi(input[i+j][2]);
}
if(ans2 == ans3) cout << "?" << endl;
else cout << firstCan << " " << secondCan << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAppbnQgbWFpbigpCnsKICAgIGludCBuLCBtOwoJY2luID4+IG4gPj4gbTsKCXZlY3Rvcjx2ZWN0b3I8c3RyaW5nPj4gaW5wdXQobik7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkgICAgc3RyaW5nIG5hbWU7CgkgICAgaW50IHJlZ2lvbiwgc2NvcmU7CiAgICAgICAgY2luID4+IG5hbWUgPj4gcmVnaW9uID4+c2NvcmU7CiAgICAgICAgdmVjdG9yPHN0cmluZz4gdntuYW1lLCB0b19zdHJpbmcocmVnaW9uKSwgdG9fc3RyaW5nKHNjb3JlKX07CiAgICAgICAgaW5wdXRbaV0gPSB2OwogICAgfQogICAgc29ydChpbnB1dC5iZWdpbigpLCBpbnB1dC5lbmQoKSwgWyZdKHZlY3RvcjxzdHJpbmc+JiBhLCB2ZWN0b3I8c3RyaW5nPiYgYikgewogICAgICAgIGlmKGFbMV0gPT0gYlsxXSkgcmV0dXJuIGFbMl0gPiBiWzJdOwogICAgICAgIHJldHVybiBhWzFdIDwgYlsxXTsKICAgIH0pOwogICAgaW50IHJlZ2lvbkNudCA9IDA7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSArPSByZWdpb25DbnQpewogICAgICAgIHN0cmluZyBmaXJzdENhbiA9ICIiLCBzZWNvbmRDYW4gPSAiIjsKICAgICAgICBpbnQgYW5zMSA9IC0xLCBhbnMyID0gLTEsIGFuczMgPSAtMSwgY3VyclJlZ2lvbiA9IHN0b2koaW5wdXRbaV1bMV0pOwogICAgICAgIHJlZ2lvbkNudCA9IDA7CiAgICAgICAgZm9yKGludCBqID0gMDsgaStqIDwgbiAmJiBzdG9pKGlucHV0W2kral1bMV0pID09IGN1cnJSZWdpb247IGorKykgewogICAgICAgICAgICByZWdpb25DbnQrKzsKICAgICAgICAgICAgaWYoc3RvaShpbnB1dFtpK2pdWzJdKSA+IGFuczEpIHsKICAgICAgICAgICAgICAgIGFuczEgPSBzdG9pKGlucHV0W2kral1bMl0pOwogICAgICAgICAgICAgICAgZmlyc3RDYW4gPSBpbnB1dFtpK2pdWzBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoc3RvaShpbnB1dFtpK2pdWzJdKSA+IGFuczIpIHsKICAgICAgICAgICAgICAgIGFuczIgPSBzdG9pKGlucHV0W2kral1bMl0pOwogICAgICAgICAgICAgICAgc2Vjb25kQ2FuID0gaW5wdXRbaStqXVswXTsKICAgICAgICAgICAgfSBlbHNlIGlmKHN0b2koaW5wdXRbaStqXVsyXSkgPiBhbnMzKQogICAgICAgICAgICAgICAgYW5zMyA9IHN0b2koaW5wdXRbaStqXVsyXSk7CiAgICAgICAgfQogICAgICAgIGlmKGFuczIgPT0gYW5zMykgY291dCA8PCAiPyIgPDwgZW5kbDsKICAgICAgICBlbHNlIGNvdXQgPDwgZmlyc3RDYW4gPDwgIiAiIDw8IHNlY29uZENhbiA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=