#include <bits/stdc++.h>
using namespace std;
const int MAX = 100005;
struct line {
  long long a, b, c;
} l[MAX];
bool intersect(line l1, line l2) { return (l1.a * l2.b - l1.b * l2.a != 0); }
bool intersect(line l1, line l2, line l3) {
  if (!intersect(l1, l2)) return false;
  if (!intersect(l1, l3)) return false;
  if (!intersect(l2, l3)) return false;
  return (l1.a * l2.b * l3.c - l1.a * l2.c * l3.b - l1.b * l2.a * l3.c +
              l1.b * l2.c * l3.a + l1.c * l2.a * l3.b - l1.c * l2.b * l3.a ==
          0);
}
vector<pair<int, int> > ans;
void solve(vector<int> v, int k) {
  if (v.size() <= k) {
    for (int i = 0; i < v.size(); i++) ans.push_back(make_pair(v[i], -2));
    throw 0;
  }
  for (int i = 0; i <= k; i++)
    for (int j = i + 1; j <= k; j++)
      if (intersect(l[v[i]], l[v[j]])) {
        ans.push_back(make_pair(v[i], v[j]));
        vector<int> nv;
        for (int x = 0; x < v.size(); x++)
          if (x != i && x != j && !intersect(l[v[i]], l[v[j]], l[v[x]]))
            nv.push_back(v[x]);
        solve(nv, k - 1);
        ans.pop_back();
      }
}
int main() {
  ios::sync_with_stdio(false);
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> l[i].a >> l[i].b >> l[i].c;
  vector<int> v;
  if (n > 2000 && k == 5) {
    for (int _ = 0; _ < 100; _++) {
      int x1 = 0, x2 = 0;
      while (x1 == x2) {
        x1 = rand() % n;
        x2 = rand() % n;
      }
      if (!intersect(l[x1], l[x2])) continue;
      int cnt = 2;
      for (int i = 0; i < n; i++)
        if (i != x1 && i != x2 && intersect(l[x1], l[x2], l[i])) cnt++;
      if (cnt >= 6) {
        ans.push_back(make_pair(x1, x2));
        for (int i = 0; i < n; i++)
          if (i != x1 && i != x2 && !intersect(l[x1], l[x2], l[i]))
            v.push_back(i);
        k--;
        break;
      }
    }
  } else {
    for (int i = 0; i < n; i++) v.push_back(i);
  }
  if (n > 10000 && k == 5) {
    cout << "NO\n";
    return 0;
  }
  try {
    solve(v, k);
  } catch (...) {
    cout << "YES\n";
    cout << ans.size() << "\n";
    for (int i = 0; i < ans.size(); i++)
      cout << ans[i].first + 1 << " " << ans[i].second + 1 << "\n";
    return 0;
  }
  cout << "NO\n";
  return 0;
}
