#include using namespace std; #define rep(i, j, n) for (int i = (int)j; i < (int)(n); i++) using ll = long long int; using vi = vector; using vvi = vector; using vvvi = vector; int main() { int N, P, Q; cin >> N >> P >> Q; vi A(N); int amax = 0; rep(i, 0, N) { cin >> A[i]; amax = max(A[i], amax); } sort(A.begin(), A.end()); vi o = {10, 9, 7, 5}; vvi a(amax+2, vi (4, 1)); rep(i, 0, amax+1) { rep(k, 0, 4) a[i+1][k] = ((ll)a[i][k] * (ll)o[k]) % P; } auto dfs = [&](auto dfs, int x, int n, int depth) { x = (x + a[A[n]][depth]) % P; if (depth == 3) { if (x % P == Q) return 1; else return 0; } int ans = 0; rep(i, n+1, N) ans += dfs(dfs, x, i, depth+1); return ans; }; int ans = 0; rep(i, 0, N) ans += dfs(dfs, 0, i, 0); cout << ans << endl; return 0; }