```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var k, b int64
var n int
fmt.Fscan(in, &k, &b, &n)
a := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
var ans int64
if b == 0 {
var cnt int64
for i := 0; i < n; i++ {
if a[i] == 0 {
cnt++
} else {
ans += cnt * (cnt + 1) / 2
cnt = 0
}
}
ans += cnt * (cnt + 1) / 2
} else {
mod := k - 1
pref := int64(0)
count := make(map[int64]int64)
count[0] = 1
for i := 0; i < n; i++ {
pref = (pref + a[i]) % mod
target := (pref - b) % mod
if target < 0 {
target += mod
}
ans += count[target]
count[pref]++
}
if b == mod {
var cnt int64
for i := 0; i < n; i++ {
if a[i] == 0 {
cnt++
} else {
ans -= cnt * (cnt + 1) / 2
cnt = 0
}
}
ans -= cnt * (cnt + 1) / 2
}
}
fmt.Fprintln(out, ans)
}
```