1 #include <cstdio>
2 #include <algorithm>
3 #include <cstring>
4 #include <cstdlib>
5 #include <ctime>
6 #include <cmath>
7 #include <set>
8 #include <map>
9 using namespace std;
10
11 const int maxm=int(2e5)+100;
12
13 struct data
14 {
15 int x, y, num;
16 bool operator < (const data b) const
17 {
18 if (x!=b.x) return x<b.x;
19 return y>b.y;
20 }
21 };
22
23 int n, m;
24 int ans;
25 data a[maxm];
26 bool vis[maxm];
27
28 void init()
29 {
30 scanf("%d%d", &n, &m);
31 for (int i=1; i<=m; ++i)
32 {
33 scanf("%d%d", &a[i].x, &a[i].y);
34 a[i].y+=a[i].x-1;
35 a[i].num=i;
36 }
37 sort(a+1, a+1+m);
38 }
39 void solve()
40 {
41 ans=m;
42 for (int i=1, next; i<=m; i=next)
43 {
44 vis[a[i].num]=true;
45 ans--;
46 next=i;
47 int k=i+1;
48 while (k<=m && a[k].x<=a[i].y+1)
49 {
50 if (a[k].y>a[next].y) next=k;
51 ++k;
52 }
53 if (next==i) next=k;
54 }
55 printf("%d\n", ans);
56 for (int i=1; i<=m; ++i)
57 if (!vis[i]) printf("%d ", i);
58 }
59 int main()
60 {
61 freopen("input.txt", "r", stdin);
62 freopen("output.txt", "w", stdout);
63 init();
64 solve();
65 return 0;
66 }