#include <bits/stdc++.h>
using i64 = long long;
using u64 = unsigned long long;
#define dbg(...) fprintf(stderr, __VA_ARGS__)
const int MAXN = 5000005;
int n, p, k, a[MAXN];
int s[MAXN], t[MAXN];
int qpow(int a, int b) {
if (!b) {
return 1;
}
int c = qpow(a, b/2);
c = 1ll * c * c % p;
if (b%2) {
c = 1ll * c * a % p;
}
return c;
}
int main() {
scanf("%d%d%d", &n, &p, &k);
s[0] = 1;
for (int i = 1; i <= n; ++i) {
scanf("%d", a+i);
s[i] = 1ll * s[i-1] * a[i] % p;
}
t[n] = qpow(s[n], p-2);
for (int i = n-1; i >= 1; --i) {
t[i] = 1ll * t[i+1] * a[i] % p;
}
int powk = 1, ans = 0;
for (int i = 1; i <= n; ++i) {
powk = 1ll * powk * k % p;
ans = (ans + 1ll * powk * s[i-1] % p * t[i]) % p;
}
printf("%d\n", ans);
}