#include <bits/stdc++.h>
using namespace std;
int main() {
  if (fopen("./input.txt", "r")) {
    freopen("./input.txt", "r", stdin);
  }
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m, k;
  cin >> n >> m >> k;
  list<pair<int, int>> a_list, b_list, ab_list, none_list;
  int a, b, c;
  for (int i = 0; i < n; i++) {
    cin >> a >> b >> c;
    if (b and c) {
      ab_list.push_back(make_pair(a, i));
    } else if (b) {
      a_list.push_back(make_pair(a, i));
    } else if (c) {
      b_list.push_back(make_pair(a, i));
    } else {
      none_list.push_back(make_pair(a, i));
    }
  }
  int remaining = k < ab_list.size() ? k : ab_list.size();
  int aa = (k - remaining) < a_list.size() ? (k - remaining) : a_list.size();
  int bb = (k - remaining) < b_list.size() ? (k - remaining) : b_list.size();
  if (a_list.size() + ab_list.size() < k or
      b_list.size() + ab_list.size() < k or remaining + aa + bb > m) {
    cout << -1 << '\n';
  } else {
    int res = 0;
    vector<int> idx;
    a_list.sort();
    b_list.sort();
    ab_list.sort();
    for (int i = 0; i < k; i++) {
      bool individual_not_empty = !a_list.empty() and !b_list.empty();
      bool collective_not_empty = !ab_list.empty();
      if (individual_not_empty and collective_not_empty) {
        if (ab_list.front().first <
            a_list.front().first + b_list.front().first) {
          res += ab_list.front().first;
          idx.push_back(ab_list.front().second);
          ab_list.pop_front();
        } else {
          res += a_list.front().first + b_list.front().first;
          idx.push_back(a_list.front().second);
          idx.push_back(b_list.front().second);
          a_list.pop_front();
          b_list.pop_front();
        }
      } else if (individual_not_empty) {
        res += a_list.front().first + b_list.front().first;
        idx.push_back(a_list.front().second);
        idx.push_back(b_list.front().second);
        a_list.pop_front();
        b_list.pop_front();
      } else if (collective_not_empty) {
        res += ab_list.front().first;
        idx.push_back(ab_list.front().second);
        ab_list.pop_front();
      } else {
        cout << "Shouldn't happen" << endl;
      }
    }
    none_list.insert(none_list.end(), a_list.begin(), a_list.end());
    none_list.insert(none_list.end(), b_list.begin(), b_list.end());
    none_list.insert(none_list.end(), ab_list.begin(), ab_list.end());
    none_list.sort();
    while (idx.size() < m) {
      res += none_list.front().first;
      idx.push_back(none_list.front().second);
      none_list.pop_front();
    }
    cout << res << '\n';
    for (int a : idx) cout << a + 1 << ' ';
  }
  return 0;
}
