Problem: The only difference between easy and hard versions is constraints.

You are given n segments on the coordinate axis OX. Segments can intersect, lie inside each other and even coincide. The i-th segment is [l_i; r_i] (l_i ≤ r_i) and it covers all integer points j such that l_i ≤ j ≤ r_i.

The integer point is called bad if it is covered by strictly more than k segments.

Your task is to remove the minimum number of segments so that there are no bad points at all.

Input

The first line of the input contains two integers n and k (1 ≤ k ≤ n ≤ 200) — the number of segments and the maximum number of segments by which each integer point can be covered.

The next n lines contain segments. The i-th line contains two integers l_i and r_i (1 ≤ l_i ≤ r_i ≤ 200) — the endpoints of the i-th segment.

Output

In the first line print one integer m (0 ≤ m ≤ n) — the minimum number of segments you need to remove so that there are no bad points.

In the second line print m distinct integers p_1, p_2, ..., p_m (1 ≤ p_i ≤ n) — indices of segments you remove in any order. If there are multiple answers, you can print any of them.

Examples

Input


7 2
11 11
9 11
7 8
8 9
7 8
9 11
7 9


Output


3
1 4 7 


Input


5 1
29 30
30 30
29 29
28 30
30 30


Output


3
1 2 4 


Input


6 1
2 3
3 3
2 3
2 2
2 3
2 3


Output


4
1 3 5 6 

Solution (in JAVA):

Solution:
import java.util.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

public class r558p4{

    private static InputReader sc;
    private static PrintWriter pw;

    static class InputReader {
        private final InputStream stream;
        private final byte[] buf = new byte[8192];
        private int curChar, snumChars;
        private SpaceCharFilter filter;

        InputReader(InputStream stream) {
            this.stream = stream;
        }

        int snext() {
            if (snumChars == -1)
                throw new InputMismatchException();
            if (curChar >= snumChars) {
                curChar = 0;
                try {
                    snumChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (snumChars <= 0)
                    return -1;
            }
            return buf[curChar++];
        }

        int nextInt() {
            int c = snext();
            while (isSpaceChar(c)) {
                c = snext();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = snext();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = snext();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        long nextLong() {
            int c = snext();
            while (isSpaceChar(c)) {
                c = snext();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = snext();
            }
            long res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = snext();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        String readString() {
            int c = snext();
            while (isSpaceChar(c)) {
                c = snext();
            }
            StringBuilder res = new StringBuilder();
            do {
                res.appendCodePoint(c);
                c = snext();
            } while (!isSpaceChar(c));
            return res.toString();
        }

        String nextLine() {
            int c = snext();
            while (isSpaceChar(c))
                c = snext();
            StringBuilder res = new StringBuilder();
            do {
                res.appendCodePoint(c);
                c = snext();
            } while (!isEndOfLine(c));
            return res.toString();
        }

        boolean isSpaceChar(int c) {
            if (filter != null)
                return filter.isSpaceChar(c);
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        private boolean isEndOfLine(int c) {
            return c == '\n' || c == '\r' || c == -1;
        }

        public interface SpaceCharFilter {
            boolean isSpaceChar(int ch);
        }
    }

    public static void main(String args[]) {
        sc = new InputReader(System.in);
        pw = new PrintWriter(System.out);

        int q = 1;
        while(q-->0)
            solve();

        pw.flush();
        pw.close();
    }

    static class Segment implements Comparable<Segment>{

        int index, len;

        Segment(int i, int l){
            index = i;
            len = l;
        }

        @Override
        public int compareTo(Segment o) {
            return o.len - len;
        }
    }

    private static void solve(){
        int n = sc.nextInt(), k = sc.nextInt();

        ArrayList<HashSet<Integer>> list = new ArrayList<>();

        for(int i=0; i<201; i++)
            list.add(new HashSet<>());

        int l[] = new int[n], r[] = new int[n];

        for(int i=0; i<n; i++){
            l[i] = sc.nextInt();
            r[i] = sc.nextInt();

            for(int p=l[i]; p<=r[i]; p++)
                list.get(p).add(i);
        }

        TreeSet<Integer> set = new TreeSet<>();
        for(int i=1; i<=200; i++){
            if(list.get(i).size() > k){
                //pw.println("i "+i);
                ArrayList<Segment> temp = new ArrayList<>();

                for(int q: list.get(i)) {
                    //pw.println("q "+q);
                    temp.add(new Segment(q, r[q]));
                }

                Collections.sort(temp);

                int w = list.get(i).size();
                for(int j=0; j<w-k; j++){
                    int index = temp.get(j).index, left = l[index], right = r[index];
                    //pw.println("index "+index);
                    set.add(index);

                    for(int p = left; p <= right; p++)
                        list.get(p).remove(index);
                }
            }
        }

        pw.println(+set.size());

        for(int q: set)
            pw.print(+(q+1)+" ");
        pw.println();
    }
}