#CF1580B. 数学课程

数学课程

数学课程

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

设 c1,c2,…,cnc_1,c_2,\ldots,c_n 是 1,2,…,n1,2,\ldots,n 的一个排列。考虑这个排列中所有包含整数 xx 的连续子数组。给定整数 mm,如果这些连续子数组的最大值恰好有 mm 种不同取值,就称整数 xx 是好数。

求长度为 nn、恰好含有 kk 个好数的排列数量。答案对 pp 取模。

输入格式

一行包含四个整数 n,m,k,pn,m,k,p。

输出格式

输出满足条件的排列数量对 pp 取模后的结果。

样例输入 1

4 3 2 10007

样例输出 1

4

样例输入 2

6 4 1 769626776

样例输出 2

472

样例输入 3

66 11 9 786747482

样例输出 3

206331312

样例输入 4

99 30 18 650457567

样例输出 4

77365367

样例说明

第一组样例的四个排列为 [1,3,2,4][1,3,2,4]、[2,3,1,4][2,3,1,4]、[4,1,3,2][4,1,3,2] 和 [4,2,3,1][4,2,3,1]。

数据范围

对于所有测试数据,1≤n≤1001\le n\le100,1≤m,k≤n1\le m,k\le n,1≤p≤1091\le p\le10^9。

子任务编号 分值 特殊限制
1 20 n≤8n\le8
2 40 m=1m=1
3 无特殊限制