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

public class Solution {
    static class Node {
        int t, a, b, ind;
        public Node(int t, int a, int b, int i) {
            this.t = t; this.a = a; this.b = b; this.ind = i;
        }
    }
    public static void main(String[] args) {
        FastReader scan = new FastReader();
        int n = scan.nextInt(), m = scan.nextInt(), k = scan.nextInt();
        List<Node> alice = new ArrayList<>(), bob = new ArrayList<>();
        List<Node> cm = new ArrayList<>(), no = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            int t = scan.nextInt(), a = scan.nextInt(), b = scan.nextInt();
            Node curr = new Node(t, a, b, i);
            if (a == 1 && b == 1) cm.add(curr);
            else if (a == 1 && b == 0) alice.add(curr);
            else if (a == 0 && b == 1) bob.add(curr);
            else no.add(curr);
        }
        if (alice.size() + cm.size() < k || bob.size() + cm.size() < k){
            System.out.println(-1);
            return;
        }
        Comparator<Node> cmp = new Comparator<Node>() {
            @Override
            public int compare(Node n1, Node n2) {
                return n1.t-n2.t;
            }
        };
        alice.sort(cmp); bob.sort(cmp); cm.sort(cmp); no.sort(cmp);
        Set<Integer> s = new HashSet<>();
        int a = 0, b = 0, c = 0;
        int T = 0;
        while (k > 0) {
            if (a < alice.size() && b < bob.size() && c < cm.size()) {
                if (alice.get(a).t + bob.get(b).t <= cm.get(c).t && (m-1) >= 1) {
                    T += alice.get(a).t + bob.get(b).t; m--;
                    s.add(alice.get(a++).ind); s.add(bob.get(b++).ind);
                }
                else if (a+1 < alice.size() && b+1 < bob.size() && c+1 < cm.size() &&
                alice.get(a).t + bob.get(b).t <= cm.get(c).t + Math.min(cm.get(c+1).t, alice.get(a+1).t + bob.get(b+1).t)
                        && (m-1) >= 1) {
                    T += alice.get(a).t + bob.get(b).t; m--;
                    s.add(alice.get(a++).ind); s.add(bob.get(b++).ind);
                } else {
                    T += cm.get(c).t;
                    s.add(cm.get(c++).ind);
                }
            } else if (a < alice.size() && b < bob.size() && (m-1) >= 1) {
                T += alice.get(a).t + bob.get(b).t; m--;
                s.add(alice.get(a++).ind); s.add(bob.get(b++).ind);
            } else if (c < cm.size()){
                T += cm.get(c).t;
                s.add(cm.get(c++).ind);
            }
            k--; m--;
        }
        int l = 0;
        ArrayList<Node> temp = new ArrayList<>();
        while (a < alice.size()) temp.add(alice.get(a++));
        while (b < bob.size()) temp.add(bob.get(b++));
        while (c < cm.size()) temp.add(cm.get(c++));
        while (l < no.size()) temp.add(no.get(l++));
        temp.sort(cmp);
        int ptr = 0;
        while (m > 0 && ptr < temp.size()) {
            T += temp.get(ptr).t; m--;
            s.add(temp.get(ptr++).ind);
        }
        if (m != 0) System.out.println(-1);
        else {
            System.out.println(T);
            for (int i: s) System.out.print((i+1) + " ");
            System.out.println();
        }
    }
}

class FastReader {
    BufferedReader br;
    StringTokenizer st;
    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }
    String next() {
        while (st == null || !st.hasMoreElements()) {
            try{
                st = new StringTokenizer(br.readLine());
            } catch (IOException  e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }
    int nextInt() {
        return Integer.parseInt(next());
    }
    long nextLong() {
        return Long.parseLong(next());
    }
    double nextDouble() {
        return Double.parseDouble(next());
    }
    String nextLine() {
        String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}