#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int maxn = 10005;
struct pp {
  int a, l;
  int pos;
} arr[2000006];
vector<pp> v;
bool cmp(pp a, pp b) {
  if (a.a == b.a) return a.l > b.l;
  return a.a < b.a;
}
int ans[200005];
int main() {
  int n, m;
  while (~scanf("%d%d", &n, &m)) {
    int i;
    for (i = 0; i < m; i++) {
      scanf("%d %d", &arr[i].a, &arr[i].l);
      arr[i].pos = i + 1;
    }
    sort(arr, arr + m, cmp);
    int flag = 0;
    int num = 0;
    for (i = 0; i < m; i++) {
      if (arr[i].a > flag) {
        v.push_back(arr[i]);
        flag = arr[i].a + arr[i].l - 1;
      } else if (arr[i].a + arr[i].l - 1 > flag) {
        while (v.size() > 1 &&
               v[v.size() - 2].a + v[v.size() - 2].l - 1 >= arr[i].a - 1) {
          ans[num++] = v[v.size() - 1].pos;
          v.pop_back();
        }
        flag = arr[i].a + arr[i].l - 1;
        v.push_back(arr[i]);
      } else {
        ans[num++] = arr[i].pos;
      }
    }
    sort(ans, ans + num);
    printf("%d\n", num);
    for (i = 0; i < num; i++) printf("%d ", ans[i]);
    puts("");
  }
  return 0;
}
