← Home
```go
package main

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

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

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

	x := make([]int64, m)
	y := make([]int64, m)
	for i := 0; i < m; i++ {
		fmt.Fscan(in, &x[i], &y[i])
	}

	best := make(map[int64]int)

	for i := 0; i < m; i++ {
		for j := i + 1; j < m; j++ {
			den := y[j] - y[i]
			if den == 0 {
				continue
			}
			num := x[i]*y[j] - x[j]*y[i]
			if num%den != 0 {
				continue
			}
			t := num / den
			if t < 1 || t > int64(n) {
				continue
			}

			dx := x[i] - t
			yy := y[i]
			cnt := 0
			for k := 0; k < m; k++ {
				if dx*y[k] == (x[k]-t)*yy {
					cnt++
				}
			}
			if cnt > best[t] {
				best[t] = cnt
			}
		}
	}

	ans := int64(n)
	for _, v := range best {
		ans += int64(v - 1)
	}

	fmt.Fprintln(out, ans)
}
```