← Home
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)
}