#include <bits/stdc++.h>
using namespace std;
int n, m, a[100005], x;
struct E {
  int l, h, o;
  bool operator<(const E &T) const { return h > T.h; }
} c[100005];
priority_queue<E> q;
bool C(E a, E b) { return a.l < b.l; }
int main() {
  scanf("%d %d", &n, &m);
  for (int a, i = 0; i < m; i++) {
    scanf("%d %d", &c[i].h, &a);
    c[i].l = n - a + 1;
    c[i].o = i + 1;
  }
  sort(c, c + m, C);
  for (int i = 1, j = 0; i <= n; i++) {
    while (j < m && c[j].l <= i) q.push(c[j++]);
    while (q.size() && q.top().h < i) q.pop();
    if (q.size()) a[x++] = q.top().o, q.pop();
  }
  printf("%d\n", x);
  for (int i = 0; i < x; i++) printf("%d%c", a[i], i == x - 1 ? '\n' : ' ');
}
