记录
#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
int read(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-'){
f=-1;
}
ch=getchar();
}
while(isdigit(ch)){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
int qpow(int a,int b,int p){
int ans=1%p;
for(;b;b>>=1){
if(b&1){
ans=ans*a%p;
}
a=a*a%p;
}
return ans;
}
int n,p,k,a[5000005],s[5000005],sv[5000005],ans;
signed main(){
n=read();
p=read();
k=read();
s[0]=1;
for(int i=1;i<=n;i++){
a[i]=read();
s[i]=s[i-1]*a[i]%p;
}
sv[n]=qpow(s[n],p-2,p);
for(int i=n-1;i>=1;i--){
sv[i]=sv[i+1]*a[i+1]%p;
}
int t=k;
for(int i=1;i<=n;i++){
ans+=k*s[i-1]*sv[i]%p;
k=k*t%p;
}
cout<<ans%p;
return 0;
}