#include "bits/stdc++.h"
using namespace std;
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#define lld long long int

int main() {
	// your code goes here
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t;
    //cin>>t;
    t=1;
    while(t--)
    {
        lld n,k;
        cin>>n>>k;
        vector <lld> a,b,s;
        int x,y,z;
        while(n--)
        {
            cin>>x>>y>>z;
            if(y==z&&y==1)
            s.push_back(x);
            else if(y==1)
            a.push_back(x);
            else if(z==1)
            b.push_back(x);
        }
        int cnta=k,cntb=k;
        sort(a.begin(),a.end());
        sort(b.begin(),b.end());
        sort(s.begin(),s.end());
        
        int lena=a.size(),lenb=b.size(),lens=s.size();
        
        int i=0,j=0;
        lld ans=0;
        int mark[lens]={0};
        while(i<lena&&j<lens)
        {
            if(cnta==0)
            break;
            if(a[i]>s[j])
            {
                ans+=a[i];
                cnta--;
                i++;
            }
            else
            {
                
                ans+=s[j];
                cnta--;
                cntb--;
                mark[j]=1;
                j++;
            }
            
        }
        //cout<<ans<<" "<<i<<" "<<j<<'\n';
        if(i!=lena)
        {
            while(i<lena)
            {
                if(cnta==0)
                break;
                
                ans+=a[i];
                cnta--;
                i++;
            }
        }
        if(j!=lens)
        {
            while(j<lens)
            {
                if(cnta==0)
                break;
                mark[j]=1;
                
                ans+=s[j];
                cnta--;
                cntb--;
                j++;
            }
        }
        //for(int i=0)
        //cout<<ans<<"\n";
        i=0,j=0;
        while(i<lenb&&j<lens)
        {
            if(cntb==0)
            break;
            if(mark[j]==1)
            {
                j++;
                while(j+1<lens&&mark[j+1]==1)
                j++;
            }
            if(b[i]>s[j])
            {
                
                ans+=b[i];
                cntb--;
                i++;
            }
            else
            {
                
                ans+=s[j];
                cnta--;
                cntb--;
                mark[j]=1;
                j++;
            }
        }
        if(i!=lenb)
        {
            while(i<lenb)
            {
                if(cntb==0)
                break;
                
                ans+=b[i];
                cntb--;
                i++;
            }
        }
        if(j!=lens)
        {
            while(j<lens)
            {
                if(cntb==0)
                break;
                
                ans+=s[j];
                cnta--;
                cntb--;
                mark[j]=1;
                j++;
            }
        }
        if(cnta>0||cntb>0)
        cout<<"-1\n";
        else
        cout<<ans<<"\n";
    }
}