package main
import (
"fmt"
)
func main() {
var n, k int
var m int64
if _, err := fmt.Scan(&n, &k, &m); err != nil {
return
}
totalPow := int64(1)
for i := 1; i < n; i++ {
totalPow = (totalPow * int64(k)) % m
}
ans := int64(0)
for s := 0; s < k; s++ {
hasA := false
var U []int
for v := 0; v < k; v++ {
if (2*v)%k == s {
hasA = true
} else {
U = append(U, v)
}
}
if !hasA {
continue
}
dp := make([]int64, k)
dp[0] = 1
for i := 1; i <= n; i++ {
nextDp := make([]int64, k)
for j := 0; j < k; j++ {
if dp[j] > 0 {
for _, v := range U {
nextJ := (j + v) % k
nextDp[nextJ] = (nextDp[nextJ] + dp[j]) % m
}
}
}
dp = nextDp
}
validS := (totalPow - dp[s] + m) % m
ans = (ans + validS) % m
}
fmt.Println(ans)
}