#include <bits/stdc++.h>
using namespace std;
struct ele {
  long long t;
  long long a;
  long long b;
};
bool comp(ele e1, ele e2) {
  return (e2.t > e1.t || ((e2.t == e1.t) && (e2.b * e2.a < e1.b * e1.a)));
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long T;
  T = 1;
  while (T--) {
    long long n, k, i;
    cin >> n >> k;
    struct ele e[n];
    for (i = 0; i < n; i++) cin >> e[i].t >> e[i].a >> e[i].b;
    long long p = 0, q = 0;
    for (i = 0; i < n; i++) {
      p += e[i].a;
      q += e[i].b;
    }
    if (p < k || q < k) {
      cout << "-1" << endl;
    } else {
      sort(e, e + n, comp);
      long long ans = 0, k1 = 0, k2 = 0;
      i = 0;
      while (k1 < k || k2 < k) {
        if (e[i].a + e[i].b > 0) {
          ans += e[i].t;
          k1 += e[i].a;
          k2 += e[i].b;
        }
        i++;
      }
      i--;
      long long t1 = i, t2 = i;
      while (k1 > k2 && t1 >= 0) {
        if (e[t1].a == 1 && e[t1].b == 0) {
          ans -= e[t1].t;
          k1--;
        }
        t1--;
      }
      while (k2 > k1 && t2 >= 0) {
        if (e[t2].b == 1 && e[t2].a == 0) {
          ans -= e[t2].t;
          k2--;
        }
        t2--;
      }
      cout << ans << endl;
    }
  }
  return 0;
}
