#include <bits/stdc++.h>
using namespace std;
int n, m, k;
struct Lesson {
  long long a, b;
  int c, id;
  bool operator<(const Lesson &t) const { return c < t.c; }
} ls[55];
int fstc[110];
long long dp[55][55][110];
pair<int, int> trans[55][55][110];
inline void upd(int x1, int y1, int z1, int y2, int z2, long long val) {
  if (dp[x1][y1][z1] < val) {
    dp[x1][y1][z1] = val;
    trans[x1][y1][z1] = make_pair(y2, z2);
  }
}
void Print(int lvl, int od, int ad) {
  if (lvl == 0) {
    printf("%d %I64d\n", ls[od].id, ls[od].a + ad);
    return;
  }
  Print(lvl - 1, trans[lvl][od][ad].first, trans[lvl][od][ad].second);
  printf("%d %lld\n", ls[od].id, ls[od].a + ad);
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < m; i++) {
    scanf("%I64d%I64d%d", &ls[i].a, &ls[i].b, &ls[i].c);
    ls[i].id = i + 1;
  }
  sort(ls, ls + m);
  memset(fstc, -1, sizeof(fstc));
  for (int i = 0; i < m; i++)
    if (fstc[ls[i].c] == -1) fstc[ls[i].c] = i;
  for (int i = 0; i < m; i++) {
    for (int j = 0; j <= (int)(ls[i].b - ls[i].a); j++) {
      dp[0][i][j] = (ls[i].a + j);
    }
  }
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < m; j++) {
      int c = ls[j].c;
      for (int task = 0; task <= 100; task++)
        if (dp[i - 1][j][task]) {
          long long val = ls[j].a + task;
          if (val > ls[j].b) continue;
          long long knval = val * 1ll * k;
          long long nvalk = val + 1ll * k;
          for (int nc = c + 1; nc <= 100; nc++) {
            if (fstc[nc] == -1) continue;
            for (int nj = fstc[nc]; nj < m && ls[nj].c == nc; nj++) {
              if (ls[nj].a <= knval && knval <= ls[nj].b) {
                int ntask = (int)(knval - ls[nj].a);
                upd(i, nj, ntask, j, task, dp[i - 1][j][task] + knval);
              }
              if (ls[nj].a <= nvalk && nvalk <= ls[nj].b) {
                int ntask = (int)(nvalk - ls[nj].a);
                upd(i, nj, ntask, j, task, dp[i - 1][j][task] + nvalk);
              }
            }
          }
        }
    }
  }
  long long ans = 0;
  int y = -1, z = -1;
  for (int i = 0; i < m; i++)
    for (int j = 0; j <= (int)(ls[i].b - ls[i].a); j++) {
      if (dp[n - 1][i][j] > ans) {
        ans = dp[n - 1][i][j];
        y = i;
        z = j;
      }
    }
  if (ans == 0 || y == -1 || z == -1) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  Print(n - 1, y, z);
  return 0;
}
