#include <bits/stdc++.h>
using namespace std;
int N, M, S[200010], E[200010], e[2000010], id[2000010];
int F[2000010], C[2000010];
bool Use[200010];
vector<int> unused;
int main() {
  scanf("%d%d", &N, &M);
  int i;
  for (i = 1; i <= N + 1; i++) F[i] = 0;
  for (i = 1; i <= M; i++) {
    int a, l;
    scanf("%d%d", &a, &l);
    S[i] = a;
    E[i] = l;
    F[S[i]]++;
    F[a + l]--;
  }
  for (i = 2; i <= N + 1; i++) F[i] += F[i - 1];
  C[0] = 0;
  for (i = 1; i <= N; i++)
    if (F[i]) C[i] = ++C[0];
  for (i = 1; i <= M; i++) {
    S[i] = C[S[i]];
    E[i] += S[i];
  }
  for (i = 1; i <= N; i++) {
    e[i] = i;
    id[i] = 0;
  }
  for (i = 1; i <= M; i++)
    if (e[S[i]] < E[i]) {
      e[S[i]] = E[i];
      id[S[i]] = i;
    }
  for (i = 2; i <= N; i++)
    if (e[i - 1] > e[i]) {
      e[i] = e[i - 1];
      id[i] = id[i - 1];
    }
  for (i = 1; i <= M; i++) Use[i] = false;
  for (int i = 1; i <= C[0]; i = e[i]) Use[id[i]] = true;
  unused.clear();
  for (i = 1; i <= M; i++)
    if (!Use[i]) unused.push_back(i);
  int s = unused.size();
  printf("%d\n", s);
  for (i = 0; i <= s - 1; i++)
    printf("%d%s", unused[i], (i == s - 1) ? "\n" : " ");
}
