#include <bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
int n,d;
cin>>n>>d;
vector<int> v(n);
for(int i = 0; i < n; i++){
cin>>v[i];
}
unordered_map<int,int> ump;
int cnt = 0;
for(int k = 0; k < n; k++){
// Sometimes v[k] is greater then k then if we did not perform this step which
// leads to end up -ve numbers
int ele = v[k] % d;
int rem = (d - ele) % d;
if(ump.count(rem)){
cnt += ump[rem];
}
// ump[v[i] % d] ++;
for(int u = 0; u <= k-1; u++){
ump[(v[u] + v[k]) % d]++;
}
}
cout<<cnt<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBuLGQ7CgljaW4+Pm4+PmQ7CgkKCXZlY3RvcjxpbnQ+IHYobik7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQljaW4+PnZbaV07Cgl9CgkKCXVub3JkZXJlZF9tYXA8aW50LGludD4gdW1wOwoJaW50IGNudCA9IDA7CgkKCWZvcihpbnQgayA9IDA7IGsgPCBuOyBrKyspewoJCQoJCS8vIFNvbWV0aW1lcyB2W2tdIGlzIGdyZWF0ZXIgdGhlbiBrIHRoZW4gaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHRoaXMgc3RlcCB3aGljaCAKCQkvLyBsZWFkcyB0byBlbmQgdXAgLXZlIG51bWJlcnMKCQkKCQlpbnQgZWxlID0gdltrXSAlIGQ7CgkJCgkJaW50IHJlbSA9IChkIC0gZWxlKSAlIGQ7CgkJCgkJaWYodW1wLmNvdW50KHJlbSkpewoJCQljbnQgKz0gdW1wW3JlbV07CgkJfQoJCQoJCS8vIHVtcFt2W2ldICUgZF0gKys7CgkJZm9yKGludCB1ID0gMDsgdSA8PSBrLTE7IHUrKyl7CgkJCXVtcFsodlt1XSArIHZba10pICUgZF0rKzsKCQl9Cgl9Cgljb3V0PDxjbnQ8PGVuZGw7CglyZXR1cm4gMDsKfQ==