#include <bits/stdc++.h>
using namespace std;
struct e {
  int x, y;
  bool f;
  e() {}
  e(int x, int y, bool f) : x(x), y(y), f(f) {}
  friend bool operator<(e a, e b) { return a.x < b.x; }
};
int main() {
  int n;
  cin >> n;
  vector<e> v(2 * n);
  vector<int> a(n), b(n);
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    v[i] = e(a[i], i, 0);
  }
  for (int i = 0; i < n; ++i) {
    cin >> b[i];
    v[i + n] = e(b[i], i, 1);
  }
  long long m;
  cin >> m;
  sort(v.begin(), v.end());
  long long R = 1;
  n <<= 1;
  for (int j = 1; j < n; ++j) {
    long long r = 1, r1 = 0;
    if (v[j - 1].f && a[v[j - 1].y] == v[j - 1].x) ++r1;
    while (j < n && v[j].x == v[j - 1].x) {
      if (v[j].f && a[v[j].y] == v[j].x) ++r1;
      ++r;
      ++j;
    }
    for (int i = 2; i <= r; ++i) {
      int i1 = i;
      while (r1 && i1 % 2 == 0) {
        i1 >>= 1;
        --r1;
      }
      R = R * i1 % m;
    }
  }
  cout << R;
  return 0;
}
