#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
struct node {
  int t, id;
  node() {}
  node(int ta, int tid) : t(ta), id(tid) {}
  friend bool operator<(node a, node b) { return a.t > b.t; }
};
int n, k, m;
priority_queue<node> qa, qb, qc, qd, q;
vector<int> ct;
int main() {
  scanf("%d%d%d", &n, &m, &k);
  int ca = 0, cb = 0, cnt = 0;
  for (int i = 1; i <= n; i++) {
    int t, a, b;
    scanf("%d%d%d", &t, &a, &b);
    if (1 == a && 0 == b) qa.push(node(t, i));
    if (0 == a && 1 == b) qb.push(node(t, i));
    if (1 == a && 1 == b) qc.push(node(t, i));
    if (0 == a && 0 == b) qd.push(node(t, i));
  }
  int res = 0, ok = 1;
  while (!qc.empty() && k > 0) {
    if (!qa.empty() && !qb.empty()) {
      if (qa.top().t + qb.top().t < qc.top().t) {
        if (m >= 2) {
          res = res + qa.top().t + qb.top().t;
          ct.push_back(qa.top().id);
          ct.push_back(qb.top().id);
          qa.pop();
          qb.pop();
          m -= 2;
        } else if (m >= 1) {
          res = res + qc.top().t;
          ct.push_back(qc.top().id);
          qc.pop();
          m -= 1;
        } else {
          ok = 0;
          break;
        }
      } else {
        if (m >= 1) {
          res = res + qc.top().t;
          ct.push_back(qc.top().id);
          qc.pop();
          m -= 1;
        } else {
          ok = 0;
          break;
        }
      }
    }
    if (0 == ok) break;
    k -= 1;
  }
  while (!qa.empty() && !qb.empty() && k) {
    if (m < 2) {
      ok = 0;
      break;
    }
    res = res + qa.top().t + qb.top().t;
    ct.push_back(qa.top().id);
    ct.push_back(qb.top().id);
    qa.pop();
    qb.pop();
    m -= 2;
  }
  if (0 == ok || 0 != k) {
    printf("-1\n");
    return 0;
  }
  while (!qa.empty()) {
    q.push(qa.top());
    qa.pop();
  }
  while (!qb.empty()) {
    q.push(qb.top());
    qb.pop();
  }
  while (!qc.empty()) {
    q.push(qc.top());
    qc.pop();
  }
  while (!qd.empty()) {
    q.push(qd.top());
    qd.pop();
  }
  while (m) {
    res += q.top().t;
    ct.push_back(q.top().id);
    q.pop();
    m -= 1;
  }
  printf("%d\n", res);
  for (int i = 0; i < ct.size(); i++) {
    printf("%d", ct[i]);
    printf(i == ct.size() - 1 ? "\n" : " ");
  }
  return 0;
}
