G. Подсчет голосов
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

$$$n$$$ человек участвуют в голосовании. У каждого человека есть ровно один голос.

$$$i$$$-й человек состоит в команде $$$t_i$$$ ($$$1 \leq t_i \leq n$$$), где $$$t_i = t_j$$$ означает что $$$i$$$, $$$j$$$ состоят в одной команде. По правилам человек может проголосовать только за человека из другой команды. Обратите внимание, что это автоматически означает, что каждый человек не может проголосовать за себя.

Каждый человек знает количество голосов $$$c_i$$$, которое он хочет получить. Сколько существует возможных способов провести голосование, так что каждый человек получит желаемое количество голосов? Поскольку это число может быть очень большим, найдите его по модулю $$$998\,244\,353$$$.

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

В первой строке находится единственное целое число $$$n$$$ ($$$1 \leq n \leq 200$$$) — количество людей.

Во второй строке находится $$$n$$$ целых чисел $$$c_1, c_2, \ldots, c_n$$$ ($$$0 \leq c_i \leq n$$$) — желаемые количества голосов. Гарантируется, что $$$\sum\limits_{i=1}^{n} c_i = n$$$.

В третьей строке находится $$$n$$$ целых чисел $$$t_1, t_2, \ldots, t_n$$$ ($$$1 \leq t_i \leq n$$$) — номера команд.

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

Выведите единственное целое число — количество способов провести голосование по модулю $$$998\,244\,353$$$.

Примеры
Входные данные
3
1 1 1
1 2 3
Выходные данные
2
Входные данные
5
2 0 1 0 2
1 2 3 4 5
Выходные данные
10
Входные данные
5
1 2 2 0 0
3 5 4 3 4
Выходные данные
5
Примечание

В первом тесте есть два возможных способа провести голосование: $$$(2, 3, 1)$$$, $$$(3, 1, 2)$$$.

В третьем тесте есть пять возможных способов провести голосование: $$$(3, 3, 2, 2, 1)$$$, $$$(2, 3, 2, 3, 1)$$$, $$$(3, 3, 1, 2, 2)$$$, $$$(3, 1, 2, 3, 2)$$$, $$$(2, 3, 1, 3, 2)$$$.