#include int i, n, k, m, res, p[200000], e[200000], a[200000], h[200000]; int modpow(long long x) { long long ret = 1; int p = k; while(p) { if(p & 1) (ret *= x) %= m; (x *= x) %= m; p >>= 1; } return (int)ret; } int main() { scanf("%d%d%d", &n, &k, &m); for(i = 0; i < n; i++) scanf("%d", &p[i]); for(i = 0; i < n; i++) scanf("%d", &e[i]); for(i = 0; i < n; i++) scanf("%d", &a[i]); for(i = 0; i < n; i++) scanf("%d", &h[i]); std::sort(p, p + n); std::sort(e, e + n); std::sort(a, a + n); std::sort(h, h + n); for(i = 0; i < n; i++) { auto tmp = std::minmax({p[i], e[i], a[i], h[i]}); (res += modpow(tmp.second - tmp.first)) %= m; } printf("%d\n", res); return 0; }