import java.io.*;
import java.util.*;
import java.math.*;

public class Main {
    public static class Node
    {
        int key;
        int value;
        Node(int a,int b)
        {
            key=a;
            value=b;
        }
    }
    public static class comp implements Comparator<Node>
    {
        public int compare(Node a,Node b)
        {
            return (int)a.key-(int)b.key;
        }
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int m=sc.nextInt();
        int k=sc.nextInt();
        ArrayList<Node> both=new ArrayList<Node>();
        ArrayList<Node> a=new ArrayList<Node>();
        ArrayList<Node> b=new ArrayList<Node>();      
        ArrayList<Node> none=new ArrayList<Node>();   
        for(int i=0;i<n;i++)
        {
            int t=sc.nextInt();
            int a1=sc.nextInt();
            int b1=sc.nextInt();
            if(a1==1&&b1==1)
                both.add(new Node(t,i));
            else if(a1==1)
                a.add(new Node(t,i));
            else if(b1==1)
                b.add(new Node(t,i));
            else
                none.add(new Node(t,i));
        }
        Collections.sort(both,new comp());
        Collections.sort(b,new comp());
        Collections.sort(a,new comp());
        Collections.sort(none,new comp());
        int p1=0,p2=0,p3=0;
        int tot=0;
        ArrayList<Node>sol1=new ArrayList<Node>();  
        ArrayList<Node>sol2=new ArrayList<Node>();
        int num=0;
        for(int i=0;i<k;i++)
        {
            if(p1==both.size())
            {
                while(p2<a.size()&&p2<b.size()&& i<k)
                {
                    tot=tot+a.get(p2).key+b.get(p2).key;
                    sol2.add(a.get(p2));
                    sol2.add(b.get(p2));
                    p2++;
                    i++;
                }
                if(i<k)
                {
                    tot=-1;
                }
                break;
            }
            else if(p2==a.size()||p2==b.size())
            {
                while(p1<both.size()&& i<k)
                {
                    tot=tot+both.get(p1).key;
                    sol1.add(both.get(p1));
                    p1++;
                    i++;
                }
                if(i<k)
                {
                    tot=-1;
                }
                break;
            }
            if(both.get(p1).key<a.get(p2).key+b.get(p2).key)
            {
                tot=tot+both.get(p1).key;
                sol1.add(both.get(p1));
                num=num+2;
                p1++;
            }
            else
            {
                tot=tot+a.get(p2).key+b.get(p2).key;
                sol2.add(a.get(p2));
                sol2.add(b.get(p2));
                num=num+1;
                p2++;
            }

        }
        // for(int i=0;i<sol1.size();i++)
        //         System.out.print(sol1.get(i).getValue()+" ");
        // for(int i=0;i<sol2.size();i++)
        //         System.out.print(sol2.get(i).getValue()+" ");
        // System.out.println();
        if(tot==-1){
            System.out.println(tot);
            return;
        }
        if(sol1.size()+sol2.size()==m){
            System.out.println(tot);
            for(int i=0;i<sol1.size();i++)
                System.out.print(sol1.get(i).value+1+" ");
            for(int i=0;i<sol2.size();i++)
                System.out.print(sol2.get(i).value+1+" ");
            return;
        }
        if(sol1.size()+sol2.size()<m)
        {
   //         System.out.println(sol1.size()+sol2.size()+" "+m);
            for(int i=p2;i<a.size();i++)
            {
                both.add(a.get(i));
            }
            for(int i=p2;i<b.size();i++)
            {
                both.add(b.get(i));
            }
            for(int i=p3;i<none.size();i++)
            {
                both.add(none.get(i));
            }
            Collections.sort(both,new comp());
            p1=0;
            for(int i=sol1.size()+sol2.size();i<m;i++)
            {
                sol1.add(both.get(p1));
       //         System.out.print(" hi "+both.get(p1).getKey()+" ");
                p1++;
            }
        }
        if(sol1.size()+sol2.size()>m)
        {
            for(int i=0;i<sol1.size()+sol2.size()-m;i++)
            {
                if(sol2.size()==0)
                {
                    System.out.println(-1);
                    return;
                }
                if(p1==both.size())
                {
                    System.out.println(-1);
                    return;
                }
                sol2.remove(sol2.size()-1);
                sol2.remove(sol2.size()-1);
                sol1.add(both.get(p1));
                p1++;
            }
        }
     //   System.out.println(tot);
        tot=0;
        
        for(int i=0;i<sol2.size();i++)
                tot=tot+sol2.get(i).key;
        for(int i=0;i<sol1.size();i++){
                tot=tot+sol1.get(i).key;
        }
    //    System.out.println();
        System.out.println(tot);
        for(int i=0;i<sol2.size();i++)
                System.out.print((sol2.get(i).value+1)+" ");
        for(int i=0;i<sol1.size();i++)
                System.out.print((sol1.get(i).value+1)+" ");
        System.out.println();
        
    }
}