4,5点过了,但前三点wa
#include<cstdio>
using namespace std;
inline int read(){
int x=0,f=1;
char ac=getchar();
while(ac<'0'||ac>'9'){
if(ac=='-') f=-1;
ac=getchar();
}
while(ac>='0'&&ac<='9'){
x=x*10+(ac-'0');
ac=getchar();
}
return x*f;
}
int n,mod,k,q[5000005],h[5000005],m=1,ans,x,y,a[5000005];
void exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;
y=0;
return;
}
exgcd(b,a%b,y,x);
y-=a/b*x;
}
int main(){
n=read(),mod=read(),k=read();
q[0]=1,h[n+1]=1;
for(register int i=1;i<=n;i++){
a[i]=read();
q[i]=1ll*q[i-1]*a[i]%mod;
m=1ll*m*a[i]%mod;
}
for(register int i=n;i>=1;i--) h[i]=1ll*h[i+1]*a[i]%mod;
for(register int i=1,j=k;i<=n;i++,j=1ll*j*k%mod){
ans+=1ll*j*q[i-1]%mod*h[i+1]%mod;
ans%=mod;
}
exgcd(m,mod,x,y);
printf("%lld\n",1ll*ans*x%mod);
return 0;
}