#include <iostream>
#include <unordered_map>
using namespace std;
inline void write(int x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)
{
write(x/10);
}
putchar(x%10+'0');
}
inline int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
unordered_map<int,int>m;
int n,k,a[114514],q[114514],ans;
int main(void){
n=read();
k=read();
m[0]=1;
for(int i=1;i<=n;i++){
a[i]=read();
q[i]=(q[i-1]+a[i])%k;
m[q[i]]++;
}
for(int i=0;i<k;i++){
ans+=m[i]*(m[i]-1)/2;
}
write(ans);
}