#include <bits/stdc++.h>
using namespace std;
const int con = 100;
int N, K, remain, x, y, sum;
bool used[100010];
class rec {
 public:
  int x, y;
} ans[6];
class line {
 public:
  long long a, b, c;
} P[100010];
bool check(int x, int y, int z) {
  long long t1, t2, t3, t4;
  t1 = P[x].b * P[y].c - P[y].b * P[x].c;
  t2 = P[x].a * P[z].b - P[z].a * P[x].b;
  t3 = P[x].b * P[z].c - P[z].b * P[x].c;
  t4 = P[x].a * P[y].b - P[y].a * P[x].b;
  if (t1 * t2 != t3 * t4) return 0;
  t1 = P[y].a * P[x].c - P[x].a * P[y].c;
  t2 = P[x].a * P[z].b - P[z].a * P[x].b;
  t3 = P[z].a * P[x].c - P[x].a * P[z].c;
  t4 = P[x].a * P[y].b - P[y].a * P[x].b;
  if (t1 * t2 != t3 * t4) return 0;
  return 1;
}
int main() {
  srand(time(0));
  scanf("%d%d", &N, &K);
  for (int i = 1; i <= N; i++)
    scanf("%I64d%I64d%I64d", &P[i].a, &P[i].b, &P[i].c);
  remain = N;
  for (int k = 1; k <= K; k++) ans[k].x = ans[k].y = -1;
  for (int k = 1; k <= K && remain; k++) {
    if (remain <= K - k + 1) {
      for (int i = 1; i <= N; i++)
        if (!used[i]) ans[k++].x = i, used[i] = 1;
      remain = 0;
      break;
    }
    for (int step = 0; step < con; step++) {
      x = rand() % N + 1;
      while (used[x]) x = rand() % N + 1;
      y = rand() % N + 1;
      while (used[y] || x == y) y = rand() % N + 1;
      if (P[x].b * P[y].a == P[y].b * P[x].a) continue;
      sum = 2;
      for (int z = 1; z <= N; z++)
        if (z != x && z != y && !used[z])
          if (check(x, y, z)) sum++;
      if (sum >= (remain + K - k) / (K - k + 1)) {
        ans[k].x = x;
        ans[k].y = y;
        used[x] = used[y] = 1;
        for (int z = 1; z <= N; z++)
          if (z != x && z != y && !used[z])
            if (check(x, y, z)) used[z] = 1;
        remain -= sum;
        break;
      }
    }
    if (ans[k].x == -1 && ans[k].y == -1) {
      printf("NO");
      return 0;
    }
  }
  if (remain) {
    printf("NO");
    return 0;
  }
  while (K && ans[K].x == -1 && ans[K].y == -1) K--;
  printf("YES\n%d\n", K);
  for (int i = 1; i <= K; i++) printf("%d %d\n", ans[i].x, ans[i].y);
}
