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