#include <bits/stdc++.h>
using namespace std;
struct bien {
  char ten[15];
  int vung;
  int diem;
};
bien a[100010];
int n, m;
bool cmp(bien t1, bien t2) {
  if (t1.vung != t2.vung) {
    return t1.vung < t2.vung;
  }
  return t1.diem > t2.diem;
}
void solve() {
  int i;
  int vung;
  int bd, dem;
  sort(a, a + n, cmp);
  bd = 0;
  for (vung = 1; vung <= m; vung++) {
    dem = 0;
    for (i = bd; i < n; i++) {
      if (a[i].vung == vung) {
        dem++;
      } else {
        break;
      }
    }
    if (dem == 2) {
      printf("%s %s\n", a[bd].ten, a[bd + 1].ten);
    } else {
      if (a[bd + 1].diem == a[bd + 2].diem) {
        printf("?\n");
      } else {
        printf("%s %s\n", a[bd].ten, a[bd + 1].ten);
      }
    }
    bd = i;
  }
}
int main() {
  int i;
  while (scanf("%d %d", &n, &m) > 0) {
    for (i = 0; i < n; i++) {
      scanf("%s %d %d", &a[i].ten, &a[i].vung, &a[i].diem);
    }
    solve();
  }
  return 0;
}
