정점 차이를 N으로 나눈 나머지로 정해지는 간선 가중치를 가진 방향 그래프에서 여러 출발지와 도착지 사이의 최단 경로 길이를 구합니다.
승현이에게 정점이 NNN개인 방향 그래프 GGG와 음이 아닌 정수로 이루어진 배열 A[1],A[2],…,A[N−1]A[1], A[2], \dots, A[N-1]A[1],A[2],…,A[N−1]이 있습니다. 정점에는 000 이상 N−1N-1N−1 이하의 번호가 붙어 있고, 간선마다 가중치가 있습니다. 처음에는 간선이 하나도 없어서 승현이는 그래프가 허전하다고 느꼈습니다. 그래서 다음과 같은 방법으로 간선을 잇기로 했습니다.
서로 다른 두 정점 uuu와 vvv (0≤u,v<N0 \le u, v < N0≤u,v<N, u≠vu \ne vu=v)에 대해
간선을 모두 추가한 뒤, 승현이는 한 정점에서 출발해 다른 정점에 도착하는 최단 경로의 길이를 구하려고 합니다.
첫째 줄에 그래프 GGG의 정점 수 NNN (5≤N≤20005 \le N \le 20005≤N≤2000)이 주어집니다.
둘째 줄에 A[1],A[2],…,A[N−1]A[1], A[2], \dots, A[N-1]A[1],A[2],…,A[N−1] (0≤A[1],A[2],…,A[N−1]≤100000 \le A[1], A[2], \dots, A[N-1] \le 100000≤A[1],A[2],…,A[N−1]≤10000)이 공백을 사이에 두고 주어집니다.
셋째 줄에 질의의 수 QQQ (1≤Q≤2000001 \le Q \le 2000001≤Q≤200000)가 주어집니다.
이어지는 QQQ개 줄 가운데 iii번째 줄 (1≤i≤Q1 \le i \le Q1≤i≤Q)에는 두 정수 aia_iai와 bib_ibi (0≤ai,bi<N0 \le a_i, b_i < N0≤ai,bi<N, ai≠bia_i \ne b_iai=bi)가 공백을 사이에 두고 주어집니다.
각 질의마다 aia_iai번 정점에서 출발해 bib_ibi번 정점에 도착하는 최단 경로의 길이를 입력에 주어진 순서대로 한 줄에 하나씩 출력합니다. 그러한 최단 경로가 없으면 −1-1−1을 출력합니다.