#include using namespace std; //#include //using namespace atcoder; using ll=long long; using Graph=vector>; #define MOD 998244353 #define INF 1000000000000000000 #define MAX 2000 ll modpow(ll a,ll x,ll mod){ a%=mod; ll ret=1; while(x>0){ if((x&1)==1){ ret=ret*a%mod; } a=a*a%mod; x>>=1; } return ret; } int main(){ int N; ll M,K; cin>>N>>K>>M; vector P(N),E(N),A(N),H(N); for(int i=0;i>P[i]; } for(int i=0;i>E[i]; } for(int i=0;i>A[i]; } for(int i=0;i>H[i]; } sort(P.begin(),P.end()); sort(E.begin(),E.end()); sort(A.begin(),A.end()); sort(H.begin(),H.end()); ll ans=0; for(int i=0;i({P[i],E[i],A[i],H[i]})-min({P[i],E[i],A[i],H[i]}); ans+=modpow(d,K,M); ans%=M; } cout<