```go
package main
import (
"fmt"
"sort"
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
func main() {
var n, p int
fmt.Scan(&n, &p)
a := make([]int, n)
maxa := 0
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
if a[i] > maxa {
maxa = a[i]
}
}
minx := max(1, maxa-n+1)
maxx := maxa
var good []int
for x := minx; x <= maxx; x++ {
mlist := make([]int, n)
skip := false
for i := 0; i < n; i++ {
m := max(1, a[i]-x+1)
if m > n {
skip = true
break
}
mlist[i] = m
}
if skip {
continue
}
sort.Sort(sort.Reverse(sort.IntSlice(mlist)))
var prod int64 = 1
ok := true
for k := 1; k <= n; k++ {
sk := n - mlist[k-1] + 1
term := sk - k + 1
if term <= 0 {
ok = false
break
}
prod = (prod * (int64(term) % int64(p))) % int64(p)
}
if ok && prod != 0 {
good = append(good, x)
}
}
fmt.Println(len(good))
for i, v := range good {
if i > 0 {
fmt.Print(" ")
}
fmt.Print(v)
}
if len(good) > 0 {
fmt.Println()
}
}
```