//题目:k倍区间(AcWing)

include<bits/stdc++.h>

using namespace std;
int n,k;
int a[100005];
map<int,int>b; //int映射成int可以用数组,但 用map比用数组更节省空间 ,因为数组多开了很多不用的空间
int main(){
cin >> n >> k;
for(int i=1;i<=n;++i){
cin >> a[i];
a[i]+=a[i-1];
b[a[i]%k]++; //理解:目标是求 ( (b[j]-b[i])%k )==0 ==> ( ( b[j]%k - b[i]%k )%k )==0
//但因为本方法是求%之后相同余数的个数,所以( b[j]%k - b[i]%k )之后不用再%k
// ==> ( b[j]%k - b[i]%k ) ==0
}
b[0]++; //因为区间的l(左端)也可以从头部开始
int ans=0;
for(int i=0;i<k;++i){
ans+=b[i]*(b[i]-1)/2; //C b[i] 取 2 (组合数)
//cout << i << " " << b[i] << endl;
}
cout << ans;
return 0;
}