#include <bits/stdc++.h>
using namespace std;
const int inf = 0x7e7e7e7e;
const int mxn = 200000, w = 4;
int n, m, k;
vector<pair<int, int> > a[w], v[w];
vector<int> ans;
int first(int x, int y) {
  int ret = v[x].back().first;
  if (y) ans.push_back(v[x].back().second);
  v[x].pop_back();
  return ret;
}
int sol(int x, int y = 0) {
  for (int i = 0; i < w; i++) v[i] = a[i];
  int ret = 0;
  for (int i = 0; i < x; i++) {
    ret += first(3, y);
  }
  for (int i = x; i < k; i++)
    for (int j = 1; j <= 2; j++) {
      if (v[j].empty()) return inf - x;
      ret += first(j, y);
    }
  for (int i = 2 * k - x; i < m; i++) {
    int b = -1;
    for (int j = 0; j < w; j++) {
      if (!v[j].empty() && (!~b || v[j].back() < v[b].back())) b = j;
    }
    if (!~b) return inf - x;
    ret += first(b, y);
  }
  return ret;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++) {
    int x, y, z;
    cin >> x >> y >> z;
    a[2 * y + z].push_back({x, i + 1});
  }
  for (int i = 0; i < w; i++)
    sort(a[i].begin(), a[i].end(), greater<pair<int, int> >());
  int l = max(0, 2 * k - m) - 1, r = min(k, (int)a[3].size());
  while (r - l > 1) {
    int mid = (l + r) / 2;
    if (sol(mid) > sol(mid + 1))
      l = mid;
    else
      r = mid;
  }
  int ret;
  if (l < r) ret = sol(r, 1);
  if (ans.size() < m) {
    cout << -1 << '\n';
  } else {
    cout << ret << '\n';
    cout << ans[0];
    for (int i = 1; i < m; i++) cout << " " << ans[i];
    cout << '\n';
  }
  return 0;
}
