ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2145. Демократичная олимпиада

Ограничение времени: 3.0 секунды
Ограничение памяти: 256 МБ
Осенним пасмурным утром на олимпиаду пришло 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