#include <bits/stdc++.h>
using namespace std;
inline bool intersection(long long l1, long long r1, long long l2,
                         long long r2) {
  return max(l1, l2) <= min(r1, r2);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout << setprecision(32);
  int n, p;
  cin >> n >> p;
  vector<array<int, 4> > passport(n);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 3; j++) {
      cin >> passport[i][j];
    }
    passport[i][1] += passport[i][0] - 1;
    passport[i][3] = i;
  }
  sort(passport.begin(), passport.end());
  for (int i = 1; i < n; i++) {
    if (passport[i][0] <= passport[i - 1][1]) {
      cout << "NO" << '\n';
      exit(0);
    }
  }
  vector<int> dp(1 << n, -1);
  vector<int> par(1 << n);
  dp[0] = 1;
  for (int mask = 1; mask < (1 << n); mask++) {
    for (int i = 0; i < n; i++) {
      if (mask & (1 << i)) {
        int nmask = mask ^ (1 << i);
        if (dp[nmask] == -1) continue;
        long long val = dp[nmask];
        for (int j = 0; j < n; j++) {
          if (nmask & (1 << j)) {
            if (val <= passport[j][1] &&
                passport[j][0] <= val + passport[i][2]) {
              val = passport[j][1] + 1;
            } else if (val + passport[i][2] < passport[j][0]) {
              break;
            }
          } else {
            if (passport[j][0] <= val && val <= passport[j][1]) {
              val = passport[j][1] + 1;
            }
          }
          if (val + passport[i][2] >= passport[i][0]) break;
        }
        val += passport[i][2];
        if (val >= passport[i][0]) continue;
        if (dp[mask] == -1 || (dp[mask] > val)) {
          dp[mask] = val;
          par[mask] = i;
        }
      }
    }
  }
  int MASK = (1 << n) - 1;
  if (p == 1) {
    if (dp[MASK] == -1) {
      cout << "NO" << '\n';
    } else {
      int mask = MASK;
      vector<int> start_time(n);
      while (mask) {
        int ind = par[mask];
        start_time[passport[ind][3]] = dp[mask] - passport[ind][2];
        mask ^= (1 << ind);
      }
      cout << "YES" << '\n';
      for (int i = 0; i < n; i++) {
        cout << 1 << " " << start_time[i] << '\n';
      }
    }
    exit(0);
  }
  for (int mask = 0; mask < (1 << n); mask++) {
    int nmask = MASK ^ mask;
    if (dp[mask] != -1 && dp[nmask] != -1) {
      vector<int> start_time(n);
      vector<int> which_pass(n);
      {
        int start_mask = mask;
        while (start_mask) {
          int ind = par[start_mask];
          which_pass[passport[ind][3]] = 1;
          start_time[passport[ind][3]] = dp[start_mask] - passport[ind][2];
          start_mask ^= (1 << ind);
        }
      }
      {
        int start_mask = nmask;
        while (start_mask) {
          int ind = par[start_mask];
          which_pass[passport[ind][3]] = 2;
          start_time[passport[ind][3]] = dp[start_mask] - passport[ind][2];
          start_mask ^= (1 << ind);
        }
      }
      cout << "YES" << '\n';
      for (int i = 0; i < n; i++) {
        cout << which_pass[i] << " " << start_time[i] << '\n';
      }
      exit(0);
    }
  }
  cout << "NO" << '\n';
  return 0;
}
