← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

type Sportsman struct {
	r, c, idx int
}

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n, m int
	fmt.Fscan(in, &n, &m)

	men := make([]Sportsman, m)
	for i := 0; i < m; i++ {
		var r, c int
		fmt.Fscan(in, &r, &c)
		men[i] = Sportsman{r, c, i + 1}
	}

	sort.Slice(men, func(i, j int) bool {
		if men[i].r != men[j].r {
			return men[i].r < men[j].r
		}
		return men[i].c > men[j].c
	})

	last := 0
	ans := make([]int, 0, m)
	for _, man := range men {
		L := n + 1 - man.c
		R := man.r
		if cand := max(L, last+1); cand <= R {
			ans = append(ans, man.idx)
			last = cand
		}
	}

	fmt.Fprintln(out, len(ans))
	for i, v := range ans {
		if i > 0 {
			fmt.Fprint(out, " ")
		}
		fmt.Fprint(out, v)
	}
	fmt.Fprintln(out)
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
```