#1271. 前缀和整除计数

前缀和整除计数

说明

在幻想之地,有一群可爱的生物,它们排成了一行,每个生物有一个正整数的属性值。这些生物们很喜欢玩一个有趣的游戏,游戏的规则是取出一些相邻的生物,使它们的属性值之和能够被k整除。

举例来说,现在有6个生物,它们的属性值依次为1、2、6、3、7、4。如果k=3,那么可以取出1、2、6,或者2、6、3、7,也可以仅仅取出一个6或者3,使所取的生物属性值之和能被3整除。当然,满足要求的取法不止以上这4种。实际上,一共有7种取法满足要求。

现在给定生物的数量n和k,以及这n个生物的属性值。你的任务是确定,从这n个生物中取出其中一个生物或者若干相邻的生物,使它们的属性值之和能被k整除的方法有多少种。

由于取法可能很多,因此你只需要输出答案对1234567取模的结果即可。

输入格式:

第一行包含两个正整数,分别代表生物的总数n和整数k。输入数据保证n≤500000,k≤100000。

以下n行,每行包含一个正整数,表示每个生物的属性值。这些正整数保证都不大于10000。

输出格式:

一个整数,表示你的答案对1234567取模的结果。

样例:

输入:

6 3
1
2
6
3
7
4
    

输出:

7
    

数据范围与提示:

前20%: n≤100

前50%: n≤10000

100%: n≤500000

前缀和为1,3,9,12,19,23

区间[1,2]和为3-0=3

区间[1,3]和为9-0=9

区间[1,4]和为12-0=12

区间[2,5]和为19-1=18

区间[3,3]和为9-3=6

区间[3,4]和为12-3=9

区间[4,4]和为12-9=3

样例