从事大型项目开发的项目经理zz刚刚收到了一项任务,即编写一个恰好m 行代码的游戏,于是zz带着拥有n 个程序员的团队开始做这个项目。
第 i 个程序员在他编写的每一行代码中都 制造了ai 错误。
如果v 1 + v 2 +...+ v n = m , 我们将非负整数序列v 1 , v 2 ,..., v n称为计划。 程序员按照这样的计划进行:一开始,第一个程序员写了 v 1行
项目的代码,然后第二个程序员编写v 2行项目的代码,依此类推,最后一个程序员编写剩下的代码行。如果项目的所有代码行数总共包含最多b个
错误, 我们就称计划为好。
你的任务是确定有多少不同的好计划。由于计划的数量可能很大,输出这个数字的余数模给定正整数mod。
第一行包含四个整数n , m , b , mod ( 1≤ n , m ≤500 , 0≤ b ≤500 ; 1≤ mod ≤10 9 +7 )- 程序员数,项目代码行数、错误的最大总数以及输出答案时应该使用的模数。
下一行包含n 个空格分隔的整数a 1 , a 2 ,..., a n ( 0≤ ai ≤500)- 每个程序员每行的错误数。
输出一个整数 - 问题模mod的答案。
3 3 3 100 1 1 1
10
3 6 5 1000000007 1 2 3
0
3 5 6 11 1 2 1
0
3 3 3 100
1 1 1
10