← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	n, _ := strconv.Atoi(strings.TrimSpace(scanner.Text()))
	
	scanner.Scan()
	parts := strings.Fields(scanner.Text())
	a := make([]int, n)
	for i := 0; i < n; i++ {
		a[i], _ = strconv.Atoi(parts[i])
	}
	
	d := make([]int, n)
	d[0] = a[0]
	for i := 1; i < n; i++ {
		d[i] = a[i] - a[i-1]
	}
	
	var res []int
	for k := 1; k <= n; k++ {
		valid := true
		for i := 0; i+k < n; i++ {
			if d[i] != d[i+k] {
				valid = false
				break
			}
		}
		if valid {
			res = append(res, k)
		}
	}
	
	fmt.Println(len(res))
	for i, v := range res {
		if i > 0 {
			fmt.Print(" ")
		}
		fmt.Print(v)
	}
	fmt.Println()
}
```