#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
class dual {
 public:
  int a, b;
  dual() { b = rand(); }
};
int operator<(const dual& s, const dual& d) {
  return ((s.a < d.a) || (s.a == d.a) && (s.b < d.b));
}
int main() {
  long long n, otv = 1, m, prom = 1, k = 1, du = 0;
  dual a[200009];
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i].a;
    a[i].b = i + 1;
  }
  for (int i = 0; i < n; i++) {
    cin >> a[n + i].a;
    a[n + i].b = i + 1;
  }
  sort(a, a + 2 * n);
  cin >> m;
  for (int i = 0; i < 2 * n - 1; i++) {
    k = 1;
    du = 0;
    while (((i + 1) < 2 * n) && (a[i].a == a[i + 1].a)) {
      k++;
      if (a[i].b == a[i + 1].b) du++;
      i++;
    }
    for (int j = 0; j < k; j++) {
      if (((j + 1) % 2 == 0) && (du > 0)) {
        du--;
        prom = prom * ((j + 1) / 2) % m;
      } else {
        prom = prom * (j + 1) % m;
      }
    }
    otv = prom * otv % m;
    prom = 1;
  }
  cout << otv;
}
