#include <bits/stdc++.h>
using namespace std;
void solve() {
  int n, k, x[3];
  cin >> n >> k;
  priority_queue<int> q;
  vector<int> v;
  priority_queue<int, vector<int>, greater<int>> qq[2];
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 3; j++) cin >> x[j];
    if (x[1] & x[2]) {
      v.push_back(x[0]);
    } else
      qq[x[1]].push(x[0]);
  }
  sort(v.begin(), v.end());
  for (int i = 0; i < min((int)v.size(), k); i++) {
    ans += v[i];
    q.push(v[i]);
  }
  while (q.size() < k && !qq[0].empty() && !qq[1].empty()) {
    ans += qq[0].top() + qq[1].top();
    q.push(qq[0].top() + qq[1].top());
    qq[0].pop();
    qq[1].pop();
  }
  while (!qq[0].empty() && !qq[1].empty()) {
    if (qq[0].top() + qq[1].top() < q.top()) {
      ans -= q.top();
      q.pop();
      ans += qq[0].top() + qq[1].top();
      q.push(qq[0].top() + qq[1].top());
      qq[0].pop();
      qq[1].pop();
    } else
      break;
  }
  if (q.size() == k) {
    cout << ans << endl;
  } else
    cout << -1 << endl;
}
int main() { solve(); }
