#include #include #include using namespace std; using mint=atcoder::modint; int H,W,M; long K; mint pK[26]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>H>>W>>K>>M; mint::set_mod(M); mint ans=0,invsum=0; for(int c=1;c<=H*W;c++) { pK[c]=mint(c).pow(K); invsum+=mint(c).inv(); } int U=0,D=0,L=0,R=0; for(int x=0;x0)U|=t; if(x+10)L|=t; if(y+1>W; w|=(v&D)<>1; w|=(v&R)<<1; w&=t; if(v==w)break; v=w; } t^=v; c+=pK[__builtin_popcount(v)]; } ans+=c; } ans*=invsum; ans/=mint(2).pow(H*W); cout<