#include <bits/stdc++.h>
using namespace std;
struct st {
  char name[100];
  int g;
  int s;
} k[100000];
int comp(const st &a, const st &b) {
  if (a.g < b.g)
    return 1;
  else if (a.g == b.g && a.s > b.s)
    return 1;
  else
    return 0;
}
int a[100000];
int main() {
  int i, n, m, j;
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%s", k[i].name);
    scanf("%d %d", &k[i].g, &k[i].s);
  }
  sort(k, k + n, comp);
  a[1] = 1;
  for (i = 1, j = 1; i < n, j <= m; i++) {
    if (k[i].g == k[i - 1].g)
      a[j]++;
    else {
      j++;
      a[j]++;
    }
  }
  for (i = 0, j = 0; i < n - 1; i = i + a[j]) {
    if (k[i].g == k[i + 1].g && k[i + 2].g != k[i + 1].g ||
        k[i].g == k[i + 1].g && k[i + 2].g == k[i + 1].g &&
            k[i + 2].s < k[i + 1].s)
      printf("%s %s\n", k[i].name, k[i + 1].name);
    else
      printf("?\n");
    j++;
  }
}
