问题 AI: 编写代码

内存限制:256 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:6 通过:3

题目描述

        从事大型项目开发的项目经理zz刚刚收到了一项任务,即编写一个恰好行代码的游戏,于是zz带着拥有n 个程序员的团队开始做这个项目。 

第 个程序员在他编写的每一行代码中都 制造了ai 错误

        如果1 + 2 +...+ n = m , 我们将非负整数序列1 , 2 ,..., n称为计划。 程序员按照这样的计划进行:一开始,第一个程序员写了 1 

项目的代码,然后第二个程序员编写2行项目的代码,依此类推,最后一个程序员编写剩下的代码行。如果项目的所有代码行数总共包含最多b

错误, 我们就称计划为好。 

        你的任务是确定有多少不同的好计划。由于计划的数量可能很大,输出这个数字的余数模给定正整数mod。 

输入格式

第一行包含四个整数n , m , b , mod ( 1≤ n , m ≤500 , 0≤ b ≤500 ; 1≤ mod ≤10 9 +7 )- 程序员数,项目代码行数、错误的最大总数以及输出答案时应该使用的模数。

下一行包含n 个空格分隔的整数1 , 2 ,..., n ( 0≤ ai ≤500)- 每个程序员每行的错误数。

输出格式

输出一个整数 - 问题模mod的答案。 

Examples
Input
3 3 3 100
1 1 1
Output
10
Input
3 6 5 1000000007
1 2 3
Output
0
Input
3 5 6 11
1 2 1
Output
0

输入样例 复制

3 3 3 100
1 1 1

输出样例 复制

10