#include // clang-format off using namespace std; using ll=long long; using ull=unsigned long long; using pll=pair; const ll INF=4e18; void print0(){}; template void print0(H h,T... t){cout<void print(H h,T... t){print0(h);if(sizeof...(T)>0)print0(" ");print(t...);} void perr0(){}; template void perr0(H h,T... t){cerr<void perr(H h,T... t){perr0(h);if(sizeof...(T)>0)perr0(" ");perr(t...);} void ioinit() { cout<> N >> P; vector A(N); for (ll i = 0; i < N; i++) { cin >> A[i]; } const ll MX = 1000000000; ll ans = 0; ll pp = P; while (pp <= MX) { unordered_map mods; for (ll i = 0; i < N; i++) { mods[A[i] % pp]++; } for (auto mp : mods) { ll c = mp.second; ans += c * (c - 1) / 2; } pp *= P; } print(ans); return 0; }