#include <bits/stdc++.h>   using namespace std;   const int mod = 1e9 + 7;   template <class T, class U>   inline void add_self(T &a, U b) {     a += b;     if (a >= mod) a -= mod;     if (a < 0) a += mod;   }   template <class T, class U>   inline void min_self(T &x, U y) {     if (y < x) x = y;   }   template <class T, class U>   inline void max_self(T &x, U y) {     if (y > x) x = y;   }   template <typename T>   void print(T v, bool show_index = false) {     int w = 2;     if (show_index) {       for (int i = 0; i < v.size(); i++) cout << setw(w) << i <<    ;       cout << endl;     }     for (auto i = v.begin(); i != v.end(); i++) cout << setw(w) << *i <<    ;     cout << endl;   }   template <typename T>   void print_vv(T v) {     if (v.size() == 0) {       cout <<  Empty  << endl;       return;     }     int w = 3;     cout << setw(w) <<    ;     for (int j = 0; j < v[0].size(); j++) cout << setw(w) << j <<    ;     cout << endl;     for (auto i = 0; i < v.size(); i++) {       cout << i <<   { ;       for (auto j = 0; j != v[i].size(); j++) {         cout << setw(w) << v[i][j] <<  , ;       }       cout <<  },  << endl;     }     cout << endl;   }   template <class T, class U>   void print_m(map<T, U> m, int w = 3) {     if (m.empty()) {       cout <<  Empty  << endl;       return;     }     for (auto x : m) cout <<  (  << x.first <<  :   << x.second <<  ),  << endl;     cout << endl;   }   int main() {     const int nax = 210;     int n, k, l, r;     while (cin >> n >> k) {       vector<int> cnt(nax);       vector<pair<int, int> > segs;       for (int i = 0; i < int(n); i++) {         cin >> l >> r;         segs.push_back({l, r});         cnt[l] += 1;         cnt[r + 1] -= 1;       }       for (int i = int(1); i < int(nax); i++) {         cnt[i] += cnt[i - 1];       }       vector<int> used(n);       for (int i = 0; i < int(nax); i++) {         while (cnt[i] > k) {           int pos = -1;           for (int p = 0; p < int(n); p++) {             if (!used[p] && (segs[p].first <= i && i <= segs[p].second) &&                 (pos == -1 || segs[p].second > segs[pos].second))               pos = p;           }           assert(pos != -1);           used[pos] = 1;           for (int j = segs[pos].first; j <= segs[pos].second; ++j) --cnt[j];         }       }       vector<int> out;       for (int i = 0; i < int(n); i++)         if (used[i]) out.push_back(i + 1);       int sz = out.size();       cout << sz << endl;       for (int i = 0; i < int(sz); i++) cout << out[i] <<    ;       cout << endl;     }     return 0;   }   