#include <bits/stdc++.h>
using namespace std;
int n, m, k;
vector<pair<int, int> > c[4];
int main() {
  int a, b, t;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < 4; i++) c[i].clear();
  for (int i = 0; i < n; i++) {
    scanf("%d%d%d", &t, &a, &b);
    c[3 - a * 2 - b].push_back(make_pair(t, i + 1));
  }
  for (int i = 0; i < 4; i++) {
    sort(c[i].begin(), c[i].end());
  }
  int n0, n1, n2, n3;
  n0 = c[0].size();
  n1 = c[1].size();
  n2 = c[2].size();
  n3 = c[3].size();
  if (n0 + n1 < k || n0 + n2 < k || 2 * k - n0 > m) {
    printf("-1\n");
    return 0;
  }
  c[0].push_back(make_pair(1e9 + 7, -1));
  c[1].push_back(make_pair(1e9 + 7, -1));
  c[2].push_back(make_pair(1e9 + 7, -1));
  c[3].push_back(make_pair(1e9 + 7, -1));
  int s0, s1, s2, s3;
  s0 = min(n0, k);
  s1 = k - s0;
  s2 = k - s0;
  s3 = 0;
  while (s0 + s1 + s2 + s3 < m) {
    t = min(c[0][s0].first,
            min(c[1][s1].first, min(c[2][s2].first, c[3][s3].first)));
    if (t == c[0][s0].first)
      s0++;
    else if (t == c[1][s1].first)
      s1++;
    else if (t == c[2][s2].first)
      s2++;
    else
      s3++;
  }
  while (s0 > 0) {
    if (s0 + s1 > k && s0 + s2 > k && s1 < n1 && s2 < n2 && s3 < n3) {
      t = min(c[1][s1].first, min(c[2][s2].first, c[3][s3].first));
      if (t < c[0][s0 - 1].first) {
        s0--;
        if (t == c[1][s1].first)
          s1++;
        else if (t == c[2][s2].first)
          s2++;
        else
          s3++;
      } else
        break;
    } else if (s0 + s1 > k && s0 + s2 > k && s3 < n3) {
      if (c[0][s0 - 1].first > c[3][s3].first) {
        s0--;
        s3++;
      } else
        break;
    } else if (s0 + s1 > k && s2 < n2) {
      if (c[0][s0 - 1].first > c[2][s2].first) {
        s0--;
        s2++;
      } else
        break;
    } else if (s0 + s2 > k && s1 < n1) {
      if (c[0][s0 - 1].first > c[1][s1].first) {
        s0--;
        s1++;
      } else
        break;
    } else if (s3 > 0 && s1 < n1 && s2 < n2) {
      if (c[0][s0 - 1].first + c[3][s3 - 1].first >
          c[1][s1].first + c[2][s2].first) {
        s0--;
        s3--;
        s1++;
        s2++;
      } else
        break;
    } else
      break;
  }
  int tot = 0;
  for (int i = 0; i < s0; i++) tot += c[0][i].first;
  for (int i = 0; i < s1; i++) tot += c[1][i].first;
  for (int i = 0; i < s2; i++) tot += c[2][i].first;
  for (int i = 0; i < s3; i++) tot += c[3][i].first;
  printf("%d\n", tot);
  for (int i = 0; i < s0; i++) printf("%d ", c[0][i].second);
  for (int i = 0; i < s1; i++) printf("%d ", c[1][i].second);
  for (int i = 0; i < s2; i++) printf("%d ", c[2][i].second);
  for (int i = 0; i < s3; i++) printf("%d ", c[3][i].second);
  printf("\n");
  return 0;
}
