Симетричний обхід
Церемонія відкриття Олімпійських ігор відбудеться на річці з командами на човнах. Розташування спортсменів на верхній частині човна було спроектовано у дуже специфічний спосіб: для кожної команди спортсменів (номерованих з до ) розміщені у вигляді бінарного дерева.
Організатор також спроектував прямий обхід, зворотний обхід і (можливо порожню) послідовну частину симетричного обходу бінарного дерева, якої повинна дотримуватись кожна команда.
Тепер, щоб переконатися, що існує достатньо розташувань дерев, щоб кожна команда могла мати унікальне, вам потрібно обчислити кількість різних можливих симетричних обходів, позначимо її , за модулем простого числа .
Вхідні дані
Складається з чотирьох рядків. Перший рядок містить число . Кожний наступний рядок містить список з цілих чисел.
Другий рядок містить список , де — це номер -го спортсмена, який знаходиться у прямому обході.
Третій рядок містить список , де — це номер -го спортсмена, який знаходиться у зворотному обході.
Четвертий рядок містить список , де — це номер -го спортсмена, який знаходиться у симетричному обході, або , якщо організатор не вказав, ким повинен бути цей -й спортсмен.
Вихідні дані
Виведіть одне ціле число : це єдине число таке, що і для нього ділиться на .