#include <bits/stdc++.h>
using namespace std;
const int N = 50;
const int NN = N + 5;
const int K = 100;
const int KK = K + 10;
const long long MAX = 1e16;
struct Subject {
  long long a, b;
  long long c;
  int ind;
} cors[NN];
long long ans[NN][KK][KK];
bool vis[NN][KK][KK];
int k, m, n;
int cmp(Subject a, Subject b) { return a.c < b.c; }
long long dp(int day, int sub, int sco) {
  if (sco < 0 || sco > K) return -MAX * K;
  if (sco > cors[sub].b - cors[sub].a) return -MAX * K;
  long long &sum = ans[day][sub][sco];
  if (vis[day][sub][sco]) return sum;
  vis[day][sub][sco] = 1;
  if (day == 0) {
    sum = cors[sub].a + sco;
    return sum;
  }
  int i, j;
  long long sc;
  sum = -MAX * K;
  for (i = 0; i < m; i++) {
    if (cors[i].c >= cors[sub].c) break;
    long long t = dp(day - 1, i, sco + cors[sub].a - k - cors[i].a);
    if (t > 0 && t > sum) {
      sum = t;
    }
    if ((sco + cors[sub].a) % k == 0) {
      t = dp(day - 1, i, (sco + cors[sub].a) / k - cors[i].a);
      if (t > 0 && t > sum) {
        sum = t;
      }
    }
  }
  sum += cors[sub].a + sco;
  return sum;
}
void dpout(int day, int sub, int sco) {
  if (day == 0) {
    printf("%d %lld\n", cors[sub].ind + 1, cors[sub].a + sco);
    return;
  }
  int i, j;
  for (i = 0; i < m; i++) {
    if (cors[i].c >= cors[sub].c) continue;
    for (j = 0; j <= cors[i].b - cors[i].a; j++) {
      if (dp(day - 1, i, j) == dp(day, sub, sco) - cors[sub].a - sco) {
        if ((cors[i].a + j + k == cors[sub].a + sco) ||
            (k * (cors[i].a + j) == cors[sub].a + sco)) {
          dpout(day - 1, i, j);
          printf("%d %lld\n", cors[sub].ind + 1, cors[sub].a + sco);
          return;
        }
      }
    }
  }
}
void solve() {
  int i, j;
  int ioflag;
  scanf("%d%d%d", &n, &m, &k);
  memset(vis, 0, sizeof(vis));
  for (i = 0; i < m; i++) {
    scanf("%lld%lld%lld", &cors[i].a, &cors[i].b, &cors[i].c);
    cors[i].ind = i;
  }
  int day = n - 1, sub, sco;
  sort(cors, cors + m, cmp);
  long long sum = 0;
  for (i = 0; i < m; i++) {
    for (j = 0; j <= cors[i].b - cors[i].a; j++) {
      if (dp(n - 1, i, j) > sum) {
        sum = dp(n - 1, i, j);
        day = n - 1, sub = i, sco = j;
      }
    }
  }
  if (sum <= 0) {
    puts("NO");
  } else {
    puts("YES");
    dpout(day, sub, sco);
  }
}
int main() {
  solve();
  return 0;
}
