#include <bits/stdc++.h>
using namespace std;
struct Edge {
  int v, val, next;
} E[3000005];
int e;
int l[110005];
void insert(int a, int b, int val = 0) {
  E[e].v = b;
  E[e].val = val;
  E[e].next = l[a];
  l[a] = e++;
}
void init() { memset(l, -1, sizeof(l)); }
pair<pair<int, int>, int> p[110000];
set<pair<int, int> > st;
set<pair<int, int> >::iterator it;
int main() {
  int n, m;
  while (scanf("%d %d", &n, &m) != EOF) {
    for (int i = 0; i < m; i++) {
      int x, y;
      scanf("%d %d", &x, &y);
      y = n + 1 - y;
      swap(x, y);
      p[i] = make_pair(pair<int, int>(x, y), i + 1);
    }
    sort(p, p + m);
    st.clear();
    vector<int> ans;
    for (int i = 1, j = 0; i <= n; i++) {
      while (j < m && p[j].first.first <= i) {
        st.insert(pair<int, int>(p[j].first.second, p[j].second));
        j++;
      }
      while (!st.empty() && st.begin()->first < i) {
        st.erase(st.begin());
      }
      if (!st.empty()) {
        ans.push_back(st.begin()->second);
        st.erase(st.begin());
      }
    }
    printf("%d\n", ans.size());
    for (int i = 0; i < (int)ans.size(); i++)
      printf("%d%s", ans[i], i == ans.size() - 1 ? "\n" : " ");
  }
}
