On dispose d'un arbre (un graphe connexe non orienté sans cycle) composé de $N$ sommets. Les sommets sont numérotés de $1$ à $N$, et les arêtes sont numérotées de $1$ à $(N-1)$.
Écrivez un programme qui effectue les requêtes suivantes :
- $u$ $v$ : Pour un sommet $x$ ($1 \le x \le N$), calculez et affichez la valeur maximale de $\operatorname{dist}(x, u) + \operatorname{dist}(x, v)$. ($1 \le u, v \le N$)
Ici, $\operatorname{dist}(x, y)$ est défini comme le nombre d'arêtes sur le plus court chemin entre le sommet $x$ et le sommet $y$. Pour tout sommet $x$ de l'arbre, $\operatorname{dist}(x, x) = 0$.
Entrée
La première ligne contient le nombre de sommets $N$ de l'arbre. ($2 \le N \le 300000$)
Les $(N-1)$ lignes suivantes décrivent l'arbre. La $i$-ième ligne contient les numéros des deux sommets reliés par l'arête $i$, séparés par un espace.
La ligne suivante contient le nombre de requêtes $Q$. ($2 \le Q \le 300000$)
Les $Q$ lignes suivantes contiennent chacune les informations d'une requête.
Sortie
Affichez les réponses aux $Q$ requêtes dans l'ordre, une par ligne.
Exemples
Entrée 1
5 1 2 2 3 2 4 4 5 3 1 3 1 5 2 3
Sortie 1
6 5 5