#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,m,cnt1,cnt2,cnt3,cao,anss;
bool flag[200005];
struct node{
int t,a,b;
}book[200005],book1[200005],book2[200005];
struct Node{
int val,opt,a1,a2;
}book3[2000005];
bool cmp(node a,node b){
return a.t<b.t;
}
bool cm(Node a,Node b){
return a.val<b.val;
}
map<int,int>mp1,mp2,mp3,mp4,mp5;
signed main(){
memset(flag,0,sizeof(flag));
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>book[i].t>>book[i].a>>book[i].b;
if(book[i].a==1&&book[i].b==0){
book1[++cnt1]=(node){book[i].t,i,i};
book3[++cnt3]=(Node){book[i].t,4,i,i};
mp1[cnt1]=cnt3;
}
else if(book[i].a==0&&book[i].b==1){
book2[++cnt2]=(node){book[i].t,i,i};
book3[++cnt3]=(Node){book[i].t,4,i,i};
mp2[cnt2]=cnt3;
}
else if(book[i].a==1&&book[i].b==1)anss++,book3[++cnt3]=(Node){book[i].t,1,i,i};
else book3[++cnt3]=(Node){book[i].t,0,i,i};
}
sort(book1+1,book1+1+cnt1,cmp);
sort(book2+1,book2+1+cnt2,cmp);
for(int i=1;i<=min(cnt1,cnt2);i++){
anss++;
book3[++cnt3]=(Node){book1[i].t+book2[i].t,2,book1[i].a,book2[i].a};
mp3[cnt3]=mp1[i];
mp4[cnt3]=mp2[i];
mp5[mp1[i]]=mp5[mp2[i]]=cnt3;
}
//cout<<anss<<'\n';
if(anss<k){
puts("-1");
return 0;
}
int limit=m;
if(k<m)limit=m-2*k;//((k-l)+l*2)>=m
//FuckCF
int ans=0,tmp=0,tmp2=0;
vector<int>vec;
sort(book3+1,book3+cnt3+1,cm);
for(int i=1;i<=cnt3;i++){
if(book3[i].opt==4)continue;
if(book3[i].opt==2&&tmp2+2<=m&&tmp<=limit){
ans+=book3[i].val;
tmp++;
vec.push_back(book3[i].a1);
vec.push_back(book3[i].a2);
tmp2+=2;
flag[i]=flag[mp3[i]]=flag[mp4[i]]=1;
}
if(tmp2>=m||tmp>=k)break;
}
for(int i=1;i<=cnt3;i++){
if(flag[i]==1||book3[i].opt==4)continue;
if(tmp>=k)break;
if(book3[i].opt==2&&tmp2+2<=m){
tmp++;
ans+=book3[i].val;
vec.push_back(book3[i].a1);
vec.push_back(book3[i].a2);
tmp2+=2;
flag[i]=flag[mp3[i]]=flag[mp4[i]]=1;
}
else if(book3[i].opt==1&&tmp2+1<=m){
tmp++;
ans+=book3[i].val;
vec.push_back(book3[i].a1);
tmp2+=1;
flag[i]=1;
}
if(tmp2>=m||tmp>=k)break;
}
for(int i=1;i<=cnt3;i++){
if(flag[i]==1)continue;
// cout<<i<<' '<<book3[i].a1<<' '<<book3[i].a2<<"wdnmd"<<book3[i].val<<'\n';
if(book3[i].opt==2&&tmp2+2<=m){
ans+=book3[i].val;
vec.push_back(book3[i].a1);
vec.push_back(book3[i].a2);
tmp2+=2;
flag[i]=flag[mp3[i]]=flag[mp4[i]]=1;
}
else if(book3[i].opt==1&&tmp2+1<=m){
ans+=book3[i].val;
vec.push_back(book3[i].a1);
tmp2+=1;
flag[i]=1;
}
else if(book3[i].opt==0&&tmp2+1<=m){
ans+=book3[i].val;
vec.push_back(book3[i].a1);
tmp2++;
flag[i]=1;
}
else if(book3[i].opt==4&&tmp2+1<=m){
ans+=book3[i].val;
vec.push_back(book3[i].a1);
tmp2++;
flag[i]=flag[mp5[i]]=1;
}
if(tmp2>=m)break;
}
if(tmp<k){
cout<<-1;
return 0;
}
cout<<ans<<'\n';
for(int i=0;i<vec.size();i++){
cout<<vec[i]<<' ';
}
return 0;
}
/*
27 5 1
232 0 1
72 0 1
235 0 1
2 0 1
158 0 0
267 0 0
242 0 1
1 0 0
64 0 0
139 1 1
250 0 1
208 0 1
127 0 1
29 0 1
53 0 1
100 0 1
52 0 1
229 0 0
1 0 1
29 0 0
17 0 1
74 0 1
211 0 1
248 0 1
15 0 0
252 0 0
159 0 1
*/
大模拟,从 #4 WA 到 #5,#6,#8,#10
救命啊