F1. Всё в порядке (максимизационная версия)
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Это максимизационная версия задачи. Разница между версиями заключается в том, что в этой версии вам нужно найти максимальную возможную глубину среди всех общих деревьев. Также ограничение на $$$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{∗}}$$$ среди всех общих деревьев для обеих последовательностей.

$$$^{\text{∗}}$$$Глубина дерева определяется как максимальное количество рёбер на простом пути от любой вершины до корня.

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

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

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

Вторая строка каждого набора входных данных содержит $$$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$$$ по всем наборам входных данных не превосходит $$$10^6$$$.

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

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

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

В первом наборе входных данных $$$a$$$ и $$$b$$$ одинаковы. Рассмотрим бамбук с рёбрами $$$(0,1)$$$ и $$$(1,2)$$$; он может дать обе последовательности обхода DFS, и его глубина равна $$$2$$$. Можно показать, что $$$2$$$ — максимальная глубина среди всех возможных общих деревьев.

Во втором наборе входных данных рассмотрите звездообразное дерево с рёбрами $$$(0,1)$$$ и $$$(0,2)$$$, глубина которого равна $$$1$$$. Можно показать, что $$$1$$$ — максимальная глубина среди всех возможных общих деревьев.

В третьем наборе входных данных на рисунке показано одно из деревьев с максимальной глубиной $$$3$$$.