#include <bits/stdc++.h>
using namespace std;
const int N = 200000 + 7;
int n, k;
struct str {
  int l, r, i;
} a[N];
multiset<str> tr;
int ans[N], p;
int operator<(const str &a, const str &b) {
  if (a.r == b.r) return a.l < b.l;
  return a.r < b.r;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; ++i)
    scanf("%d%d", &a[i].l, &a[i].r), a[i].i = i, ++a[i].r;
  sort(a + 1, a + n + 1, [](str a, str b) { return a.l < b.l; });
  for (int i = 1, j; i <= n; i = j) {
    for (j = i; a[i].l == a[j].l; ++j) tr.insert(a[j]);
    while (!tr.empty() && (*tr.begin()).r <= a[i].l) tr.erase(tr.begin());
    while (tr.size() > k) {
      auto it = tr.end();
      --it;
      ans[++p] = (*it).i;
      tr.erase(it);
    }
  }
  printf("%d\n", p);
  for (int i = 1; i <= p; ++i) printf("%d ", ans[i]);
  return 0;
}
