#include using namespace std; long long powers[26]; int H,W,M; long long K; int d[4]={-1,1,-W,W}; long long inv[26]; int main(){ scanf("%d%d%lld%d",&H,&W,&K,&M); assert(H*W<=20); powers[1]=1; for(int i=2;i<=25;i++){ powers[i]=1; long long mul=i; long long t=K; while(t){ if(t&1){ powers[i]*=mul; powers[i]%=M; } mul*=mul; mul%=M; t>>=1; } } inv[1]=1; for(int i=2;i<=26;i++){ inv[i]=M-inv[M%i]*(M/i)%M; } long long res=0; for(int i=0;i<(1< que; que.push(j); int count=1; while(!que.empty()){ int v=que.front(); que.pop(); for(int k=0;k<4;k++){ int nv=v+d[k]; if(nv>=H*W || nv<0){ continue; } if(!(i&(1<