#include <bits/stdc++.h>
using namespace std;
int main() {
int n,d;
cin>>n>>d;
if(n <=2 ){
cout<<0;
return 0;
}
vector<int> numbers(n);
for(auto& number: numbers){
cin>>number;
}
int answer = 0;
unordered_map<int,int> moduloPairSum;
moduloPairSum[(numbers[0]+numbers[1])%d]++;
for(int i=2; i<n; i++){
int numModulo = numbers[i]%d;
int reqModulo = (d-numModulo)%d;
if(moduloPairSum.find(reqModulo) != moduloPairSum.end())answer += moduloPairSum[reqModulo];
for(int j=0; j<i; j++){
moduloPairSum[(numbers[i] + numbers[j])%d]++;
}
}
cout<<answer;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCBuLGQ7CgljaW4+Pm4+PmQ7CgkKCWlmKG4gPD0yICl7CgkJY291dDw8MDsKCQlyZXR1cm4gMDsKCX0KCQoJdmVjdG9yPGludD4gbnVtYmVycyhuKTsKCQoJZm9yKGF1dG8mIG51bWJlcjogbnVtYmVycyl7CgkJY2luPj5udW1iZXI7Cgl9CgkKCWludCBhbnN3ZXIgPSAwOwoJCgl1bm9yZGVyZWRfbWFwPGludCxpbnQ+IG1vZHVsb1BhaXJTdW07CgkKCW1vZHVsb1BhaXJTdW1bKG51bWJlcnNbMF0rbnVtYmVyc1sxXSklZF0rKzsKCQoJZm9yKGludCBpPTI7IGk8bjsgaSsrKXsKCQlpbnQgbnVtTW9kdWxvID0gbnVtYmVyc1tpXSVkOwoJCWludCByZXFNb2R1bG8gPSAoZC1udW1Nb2R1bG8pJWQ7CgkJCgkJaWYobW9kdWxvUGFpclN1bS5maW5kKHJlcU1vZHVsbykgIT0gbW9kdWxvUGFpclN1bS5lbmQoKSlhbnN3ZXIgKz0gbW9kdWxvUGFpclN1bVtyZXFNb2R1bG9dOwoJCQoJCWZvcihpbnQgaj0wOyBqPGk7IGorKyl7CgkJCW1vZHVsb1BhaXJTdW1bKG51bWJlcnNbaV0gKyBudW1iZXJzW2pdKSVkXSsrOwoJCX0KCX0KCQoJCgkKCWNvdXQ8PGFuc3dlcjsKCQoJcmV0dXJuIDA7Cn0=