F2. Всё в порядке (подсчётная версия)
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Это подсчётная версия задачи. Разница между версиями заключается в том, что в этой версии вам нужно найти количество различных общих деревьев. Также ограничение на $$$n$$$ в этой версии ниже. Вы можете делать взломы, только если все версии задачи решены.

На Рождество Тортинита и Ариетта получили по рождественской ёлке. По случайному совпадению, их деревья имеют одинаковые свойства: оба имеют $$$n+1$$$ вершину и корень в вершине $$$0$$$. В своей рождественской открытке к вам каждая из них прилагает последовательность обхода DFS своего дерева после своих приветствий. Напомним, что последовательность обхода DFS генерируется следующим псевдокодом.

dfs_order = []

def dfs(v):
dfs_order.append(v)
выбрать любую перестановку s детей вершины v
for child in s:
dfs(child)

dfs(корень)

Пусть последовательность обхода DFS дерева Тортиниты будет $$$a_0, a_1, \ldots, a_n$$$, а дерева Ариетты — $$$b_0, b_1, \ldots, b_n$$$. Вы замечаете, что $$$a_0 = b_0 = 0$$$, и поскольку они сёстры-близнецы, вы задаетесь вопросом, могли ли они получить одно и то же дерево. Вы также чувствуете, что для своей рождественской ёлки сёстры не выберут тривиальную структуру. Поэтому вы хотите найти количество различных общих деревьев$$$^{\text{∗}}$$$ для обеих последовательностей. Так как ответ может быть очень большим, выведите его по модулю $$$998\,244\,353$$$.

$$$^{\text{∗}}$$$Два дерева считаются различными, если существует вершина, для которой множество номеров детей не совпадают в деревьях. Другими словами, порядок детей вершины не имеет значения.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le \boldsymbol{5000}$$$).

Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \cdots, a_n$$$ ($$$1 \le a_i \le n$$$).

Третья строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$b_1, b_2, \cdots, b_n$$$ ($$$1 \le b_i \le n$$$).

Гарантируется, что ни одна из последовательностей $$$a$$$ и $$$b$$$ не содержит дубликатов.

Гарантируется, что сумма значений $$$n^2$$$ по всем наборам входных данных не превосходит $$$2.5\cdot10^7$$$.

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

Для каждого набора входных данных выведите одно целое число — количество различных общих деревьев по модулю $$$998\,244\,353$$$.

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

В первом наборе входных данных два разных дерева — это дерево A и дерево B на рисунке ниже. Обратите внимание, что дерево B и дерево C одинаковы.

Во втором наборе входных данных единственное общее дерево — это дерево B.