#include using namespace std; using lint = long long; template T modpow(T a, T b, T mod=998244353) { T res = 1; while (b > 0) { if (b&1) (res *= a) %= mod; (a *= a) %= mod; b >>= 1; } return res; } int main() { lint n, p, q; cin >> n >> p >> q; vector vec(n); for (int i = 0; i < n; i++) cin >> vec[i]; sort(vec.begin(), vec.end()); vector> cnt(n+1, vector(p)); // iより後ろでjあまるものの数 vector rui = cnt; for (int i = 0; i < n; i++) { cnt[i][modpow(5LL, vec[i], p)]++; } for (int i = n-1; i >= 0; i--) { for (int j = 0; j < p; j++) { rui[i][j] = rui[i+1][j]+cnt[i+1][j]; } } lint ans = 0; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { for (int k = j+1; k < n; k++) { lint now = modpow(10LL, vec[i], p)+modpow(9LL, vec[j], p)+ modpow(7LL, vec[k], p); now %= p; ans += rui[k][(q+p-now)%p]; } } } cout << ans << endl; return 0; for (auto x : rui) { for (auto y : x) cout << y << " "; cout << endl; } }