//TLE 30 #include using namespace std; #define int long long const int MAX_N =5e6+5; int binExp(int b,int e,int p){ int r=1; while(e>0){ if(e%2==1)r=(r*b)%p; b=(b*b)%p; e=e>>1; } return r; } int inverse(int b,int p){ return binExp(b, p-2,p); } #ifdef OITEST #endif #ifndef OITEST #endif #ifndef OITEST int read(){ int x=0,w=1; char ch=0; while(!isdigit(ch)){ if(ch=='-')w=-1; ch=getchar(); } while(isdigit(ch)){ x=x*10+(ch-'0'); ch=getchar(); } return x*w; } #endif signed main(signed argc,char *argv[]){ ios::sync_with_stdio(false); cin.tie(0); #ifdef OITEST assert(argc==3); cout<>n>>p>>k; #endif #ifndef OITEST n=read(); p=read(); k=read(); #endif int ans=0; int kp=k; for(int i=1;i<=n;i++){ int a; #ifdef OITEST cin>>a; #endif #ifndef OITEST a=read(); #endif ans=((int)(kp*inverse(a, p))%p+ans)%p; kp=(kp*k)%p; } cout<>my; afile>>anser; assert(my==anser); #endif }