#include <bits/stdc++.h>
using namespace std;
struct B {
  int t, a, b;
};
vector<B> V;
bool cmp(B a, B b) {
  if (a.t == b.t) {
    return a.a * a.b > b.a * b.b;
  } else
    return a.t < b.t;
}
int main() {
  int n, k;
  B t;
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d%d", &t.t, &t.a, &t.b);
    if (t.a || t.b) V.push_back(t);
  }
  sort(V.begin(), V.end(), cmp);
  int pos, Len = V.size(), cnta = 0, cntb = 0;
  for (pos = 0; pos < Len; ++pos) {
    if (V[pos].a) ++cnta;
    if (V[pos].b) ++cntb;
    if (cnta >= k && cntb >= k) break;
  }
  int ans = 0;
  if (cnta == cntb) {
    for (int i = 0; i <= pos; ++i) ans += V[i].t;
  } else if (cnta == k) {
    for (int i = 0; i <= pos; ++i) {
      if (V[i].a) ans += V[i].t;
    }
  } else if (cntb == k) {
    for (int i = 0; i <= pos; ++i) {
      if (V[i].b) ans += V[i].t;
    }
  }
  if (pos < Len)
    printf("%d\n", ans);
  else
    printf("-1\n");
  return 0;
}
