Олимпиадный тренинг

Задача . D. Дима и две последовательности


У маленького Димы есть две последовательности точек с целочисленными координатами: последовательность (a1, 1), (a2, 2), ..., (an, n) и последовательность (b1, 1), (b2, 2), ..., (bn, n).

Теперь Дима хочет подсчитать сколько различных последовательностей точек длины n можно собрать из этих последовательностей, таких что x-координаты точек в собранной последовательности будут не убывать. Помогите ему в этом. Обратите внимание, что каждый элемент каждой из начальных последовательностей должен быть использован ровно один раз в собранной последовательности.

Две собранные последовательности (p1, q1), (p2, q2), ..., (pn, qn) и (x1, y1), (x2, y2), ..., (xn, yn) Дима считает различными, если найдется такое i (1 ≤ i ≤ 2·n), что (pi, qi) ≠ (xi, yi).

Так как ответ может быть достаточно большим, выведите остаток от деления ответа на число m.

Входные данные

В первой строке задано целое число n (1 ≤ n ≤ 105). Во второй строке заданы n целых чисел a1, a2, ..., an (1 ≤ ai ≤ 109). В третьей строке заданы n целых чисел b1, b2, ..., bn (1 ≤ bi ≤ 109). Числа в строках разделяются пробелами.

В последней строке задано целое число m (2 ≤ m ≤ 109 + 7).

Выходные данные

В единственную строку выведите остаток от деления ответа на задачу на число m.

Примечание

В первом примере можно получить только одну последовательность: (1, 1), (2, 1).

Во втором примере можно получить такие последовательности : (1, 1), (2, 2), (2, 1), (3, 2); (1, 1), (2, 1), (2, 2), (3, 2). Таким образом ответ 2.


Примеры
Входные данныеВыходные данные
1 1
1
2
7
1
2 2
1 2
2 3
11
2

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w641
Комментарий учителя