7247 - 滚榜(ranklist)

通过次数

0

提交次数

0

时间限制 : 1 秒
内存限制 : 512 MB

封榜是ICPC 系列竞赛中的一个特色机制。ICPC 竞赛是实时反馈提交结果的程序设计竞赛,参赛选手与场外观众可以通过排行榜实时查看每个参赛队伍的过题数与排名。竞赛的最后一小时会进行“封榜”,即排行榜上将隐藏最后一小时内的提交的结果。赛后通过滚榜环节将最后一小时的结果(即每只队伍最后一小时的过题数)公布。

Alice 围观了一场ICPC 竞赛的滚榜环节。本次竞赛共有n支队伍参赛,队伍从1-n编号,i 号队伍在封榜前通过的题数为a_i。排行榜上队伍按照过题数从大到小进行排名,若两支队伍过题数相同,则编号小的队伍排名靠前。 滚榜时主办方以b_i 不降的顺序依次公布了每支队伍在封榜后的过题数b_i (终该队伍总过题数为b_i ),且每公布一支队伍的结果,排行榜上就会实时更新排名。Alice 并不记得队伍被公布的顺序,也不记得最终排行榜上的排名情况,只记得每次公布后,本次被公布结果的队伍都成为了新排行榜上的第一名,以及所有队伍在封榜后一共通过了m 道题(即) 。

现在Alice 想请你帮她算算,最终排行榜上队伍的排名情况可能有多少种。

输入

第一行包含两个正整数n,m,表示队伍数量与它们封榜后的总过题数。 第二行包含n 个正整数表示a_i

输出

仅一行一个整数表示答案。

样例

输入

3 6
1 2 1

输出

5

输入

6 50
4 7 9 3 0 3

输出

96

输入

11 300
6 8 8 12 0 11 6 1 0 15 5

输出

30140983

提示

样例1说明

  1. 最终排名:1, 3, 2,滚榜情况(按公布顺序,下同):b_2 = 0,b_3 = 2,b_1 = 4
  2. 最终排名:2, 1, 3,滚榜情况:b_3 = 2,b_1 = 2,b_2 = 2
  3. 最终排名:2, 3, 1,滚榜情况:b_1 = 1,b_3 = 2,b_2 = 3
  4. 最终排名:3, 1, 2,滚榜情况:b_2 = 0,b_1 = 2,b_3 = 4
  5. 最终排名:3, 2, 1,滚榜情况:b_1 = 1,b_2 = 1,b_3 = 4。 对于所有测试数据:1\le n\le 13,1\le m\le 500,0\le a_i\le 10^4。 每个测试点的具体限制见下表:

来源

NOI省选