#P1091. 清洁

清洁

题目描述

CC 的房间乱透了,他需要锻炼自己的清理能力。

对于一个长度为 len\mathrm{len} 的序列 AA,定义一次清理操作为:

  • 如果 len=1\mathrm{len}=1,则什么都不做,否则:

  • AiA_i 为序列中的第 ii 个元素(1<i<len1 < i < \mathrm{len}len\mathrm{len} 为序列长度),若 Ai1>AiA_{i-1} > A_{i}Ai+1>AiA_{i+1} > A_{i} 则标记 AiA_i 。 若 A2>A1A_2 > A_1 则标记 A1A_1 , 若 Alen1>AlenA_{\mathrm{len}-1} > A_{\mathrm{len}} 则标记 AlenA_{\mathrm{len}}

  • 然后,将有标记的元素从序列中删除。

求有多少种长度为 NN 的满足以下条件的序列 :

  • 1N1 \sim NNN 个数在序列中各出现了一次;
  • 进行恰好 KK清理操作后,该序列只含有 11 个元素。即进行 K1K-1 次操作时,序列长度 >1>1;进行 KK清理操作后,序列长度 =1=1

满足条件的序列可能很多,所以请将结果对 PP 取模。

输入格式

输入仅一行,包含三个整数 N,K,PN,K,P

输出格式

输出一行一个整数,表示满足条件的序列个数对 PP 取模的结果。

5 3 100000007
4

样例解释 1

所有满足条件的序列列举如下:

  • 4,1,3,2,5
  • 4,2,3,1,5
  • 5,1,3,2,4
  • 5,2,3,1,4

数据范围

对于 30%30\% 的数据,保证 1K,N201 \le K,N \le 20 。 对于 100%100\% 的数据,保证 1K,N10001 \le K,N \le 1000 , N2N \ge 2 , 108P10910^8 \le P \le 10^9