#include<bits/stdc++.h>
#define f first
#define int long long
#define s second
using namespace std;
const int N=2e5+5,mod=1e9+7,Inf=1e16;
int t,n,m,k,p[2][N];
pair<int,int> tree[4*N];
vector<pair<int,int> >a[3],v;
string s;
void update(int u,int ind,int l,int r){
	if(l>ind || r<ind) return;
	if(l==r) {
		tree[u].f++;
		tree[u].s+=ind;
		return;
	}
	int mid=(l+r)/2;
	update(2*u,ind,l,mid);
	update(2*u+1,ind,mid+1,r);
	tree[u].f=tree[2*u].f+tree[2*u+1].f;
	tree[u].s=tree[2*u].s+tree[2*u+1].s;
}
int getans(int u,int l,int r,int ind){
	if(l==r) return tree[u].s;
	int mid=(l+r)/2;
	if(tree[2*u].f>=ind) return getans(2*u,l,mid,ind);
	return tree[2*u].s+getans(2*u+1,mid+1,r,ind-tree[2*u].f);
}
main(){
	cin>>n>>m>>k;
	int T=10000;
	for(int i=1;i<=n;i++){
		int t,f1,f2;
		cin>>t>>f1>>f2;
		if(f1&&f2) a[2].push_back({t,i});
		else 
		if(f1) a[1].push_back({t,i});
		else if(f2) a[0].push_back({t,i});
		else update(1,t,1,T),v.push_back({t,i});
	}
	for(int i=0;i<3;i++) sort(a[i].begin(),a[i].end());
	int cur1=(int)a[1].size()-1,cur2=(int)a[0].size()-1;
	for(int i=0;i<2;i++){
		for(int j=0;j<a[i].size();j++){
			p[i][j]=a[i][j].f;
			if(j) p[i][j]+=p[i][j-1];
		}
	}
	int cur = 0,ans=Inf,cnt=0;
	for(int i=0;i<=a[2].size();i++){
		if(i) {
			cur += a[2][i-1].f; 
		}
		if(i==m) { 
			if(ans>cur && m>=k) ans=cur,cnt=i;
			break;
		}
		while(cur1+1>k-i && cur1>=0) update(1,a[1][cur1].f,1,T),cur1--;
		while(cur2+1>k-i && cur2>=0) update(1,a[0][cur2].f,1,T),cur2--;
		if(min(cur1,cur2)+1+i>=k&& m-i-cur1-cur2-2>=0 && tree[1].f>=m-i-cur1-cur2-2)  {
			int ans_=cur+p[1][cur1]+p[0][cur2]; 
			if(m-i-cur1-cur2-2) ans_+=getans(1,1,T,m-i-cur1-cur2-2);
			if(ans_ < ans) { 
				ans=ans_;
				cnt=i;
			}
		}
	}
	if(ans==Inf) cout<<-1;
	else {
	 cout<<ans<<endl;
	 for(int i=1;i<=cnt;i++) {
	 	cout<<a[2][i-1].s<<" ";
	 }
	 for(int i=cnt;i<a[2].size();i++) v.push_back(a[2][i]);
	 m-=cnt;
	 k-=cnt;
	 k=max(k,0ll); 
	 m-=2*k; 
	 for(int i=0;i<k;i++){
	 	cout<<(a[0][i].s)<<" "<<a[1][i].s<<" ";
	 } 
	 for(int i=0;i<2;i++)
	 for(int j=k;j<a[i].size();j++) {
	 	v.push_back(a[i][j]);
	 }
	 sort(v.begin(),v.end());
	 for(int i=0;i<m;i++){
	 	cout<<v[i].s<<" ";
	 }
}
}
