#include <iostream>
using namespace std;
#define N 100010 //这儿定义范围要弄好 尽量多弄点
int cnt[N];//计算一个有多少个区间的
long long arr[N];//原来要输入的数组
int main()
{
int n;
int k;
cin >> n >> k;
cnt[0] = 1;//相当于是取模运算之后如果数值为0,就加一
long long ans = 0;//定义一个最后要输出的个数
for (int i = 1; i <= n; i++)
{
//相同余数的两个区间互相减 也可以是k的倍数区间
cin >> arr[i];
arr[i] += arr[i - 1];//这个是前缀和的知识,相当于是每一个元素变成了前面所有元素的和
ans += cnt[arr[i] % k];//因为相同余数的两个区间互相减 也可以是k的倍数区间
//这里有一个点是 如果又出现一个元素的话 那么整体两两区间互相组合的个数刚好是原来的个数加上新出现元素的下标值
//这样说的原因其实可以好好想想,新出现一个元素,之前的元素就要和新出现的元素结合一次,而之前元素的组合方式还是不变的
cnt[arr[i] % k]++;//把重复出现的再加上
}
cout << ans;
return 0;
}