#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
int n, k;
int a[4][maxn], n1, n2, n3;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    int x, y, z;
    scanf("%d%d%d", &x, &y, &z);
    if (y + z == 0)
      continue;
    else if (y && z)
      a[1][++n1] = x;
    else if (y)
      a[2][++n2] = x;
    else
      a[3][++n3] = x;
  }
  if (n1 + n2 < k || n1 + n3 < k) {
    cout << -1 << endl;
    return 0;
  }
  sort(a[1] + 1, a[1] + 1 + n1);
  sort(a[2] + 1, a[2] + 1 + n2);
  sort(a[3] + 1, a[3] + 1 + n3);
  int ans = 0;
  int p1 = 1, p2 = 1, p3 = 1;
  int k1 = k, k2 = k;
  while (k1 > 0 || k2 > 0) {
    if (a[1][p1] > a[2][p2] && a[1][p1] > a[3][p3]) {
      ans += a[1][p1++];
      k1--, k2--;
      continue;
    }
    if (k1 > 0 && k2 > 0) {
      if (p2 > n2 || p3 > n3 || a[1][p1] >= a[2][p2] + a[3][p3]) {
        ans += a[1][p1++];
      } else {
        ans += a[2][p2++] + a[3][p3++];
      }
      k1--;
      k2--;
    } else if (k1 > 0) {
      if (p2 > n2 || a[1][p1] < a[2][p2])
        ans += a[1][p1++], k1--, k2--;
      else
        ans += a[2][p2++], k1--;
    } else {
      if (p3 > n3 || a[1][p1] < a[3][p3])
        ans += a[1][p1++], k1--, k2--;
      else
        ans += a[3][p3++], k2--;
    }
  }
  cout << ans << endl;
  return 0;
}
