#236. 奶牛排队

奶牛排队

Description

有 n 头奶牛,身高两两不同。每头奶牛的身高均为不超过 n 的正整数。

现在要让所有奶牛在数轴上排队,要求:

(1)任意一头奶牛所在的坐标必须是不超过 m 的正整数。

(2)任意一头奶牛与其最近的奶牛之间的距离不能小于自己的身高。(注:两头奶牛的距离为它们的坐标差的绝对值。)

问:有多少种不同的排队方案?方案数可能很大,你需要将其 mod p 后输出。

注:两种排队方案不同,当且仅当在两种方案中至少有一头奶牛所在的坐标不同。

Input

一行,三个整数 n, m, p

Output

一个整数,表示答案

Samples

2 4 8
6
100 123456789 998244353
272665596

Sample Hint 1

两头奶牛,若奶牛 1 在坐标 x1,奶牛 2 在坐标 x2,用 (x1, x2) 表示,则共有 6 种方案:

(1, 3), (1, 4), (2, 4), (3, 1), (4, 1), (4, 2)

Data Size

10% 的数据,n ≤ 10, m ≤ 30

30% 的数据,n ≤ 20;

50% 的数据,n ≤ 50;

70% 的数据,m ≤ 10^5;

100% 的数据,n ≤ 100; 1 ≤ m, p ≤ 10 ^ 9。