Осенним пасмурным утром на олимпиаду пришло n школьников, знания которых оцениваются неотрицательными числами ai. И вот совпадение! Жюри олимпиады подготовило для школьников как раз n задач, каждая из которых задаётся сложностью bi.
Школьник может решить задачу только тогда, когда оценка его знаний ai не меньше сложности задачи bj. Жюри очень хочет, чтобы участники олимпиады не грустили, поэтому каждому участнику выдаётся ровно одна задача, которую он гарантировано сможет решить.
Необходимо посчитать количество различных способов раздать n школьникам n задач так, чтобы каждая задача досталась ровно одному школьнику и обеспечила радость от решения и получения ответа. Поскольку ответ может быть очень большим, достаточно посчитать остаток при делении его на p.
Исходные данные
В первой строке дано целое число n — количество участников олимпиады и количество задач (1 ≤ n ≤ 105).
Во второй строке через пробел дано n целых чисел ai — оценки знаний учеников олимпиады (0 ≤ ai ≤ 109).
В третьей строке через пробел дано n целых чисел bi — сложности задач (0 ≤ bi ≤ 109).
В четвертой строке дано целое число p, по модулю которого необходимо посчитать ответ (1 ≤ p ≤ 109).
Результат
В единственной строке выведите одно целое число — остаток при делении количества способов раздать задачи на p (иными словами, количество способов раздать задачи по модулю p).
Примеры
исходные данные | результат |
---|
3
1 2 3
1 2 3
100
| 1
|
3
3 3 3
1 1 1
100
| 6
|
Автор задачи: Валентин Зуев
Источник задачи: Уральская командная олимпиада по программированию 2019