차이 그래프

정점 차이를 N으로 나눈 나머지로 정해지는 간선 가중치를 가진 방향 그래프에서 여러 출발지와 도착지 사이의 최단 경로 길이를 구합니다.

보통6최단 경로그래프수학아직 제출이 없습니다시간 제한1초메모리 제한32 MB

문제

승현이에게 정점이 NN개인 방향 그래프 GG와 음이 아닌 정수로 이루어진 배열 A[1],A[2],,A[N1]A[1], A[2], \dots, A[N-1]이 있습니다. 정점에는 00 이상 N1N-1 이하의 번호가 붙어 있고, 간선마다 가중치가 있습니다. 처음에는 간선이 하나도 없어서 승현이는 그래프가 허전하다고 느꼈습니다. 그래서 다음과 같은 방법으로 간선을 잇기로 했습니다.

서로 다른 두 정점 uuvv (0u,v<N0 \le u, v < N, uvu \ne v)에 대해

  • u>vu > v이고 A[uv]A[u-v]가 양수이면, uu에서 vv로 향하는 가중치 A[uv]A[u-v]인 간선을 추가합니다.
  • u<vu < v이고 A[uv+N]A[u-v+N]이 양수이면, uu에서 vv로 향하는 가중치 A[uv+N]A[u-v+N]인 간선을 추가합니다.

간선을 모두 추가한 뒤, 승현이는 한 정점에서 출발해 다른 정점에 도착하는 최단 경로의 길이를 구하려고 합니다.

입력

첫째 줄에 그래프 GG의 정점 수 NN (5N20005 \le N \le 2000)이 주어집니다.

둘째 줄에 A[1],A[2],,A[N1]A[1], A[2], \dots, A[N-1] (0A[1],A[2],,A[N1]100000 \le A[1], A[2], \dots, A[N-1] \le 10000)이 공백을 사이에 두고 주어집니다.

셋째 줄에 질의의 수 QQ (1Q2000001 \le Q \le 200000)가 주어집니다.

이어지는 QQ개 줄 가운데 ii번째 줄 (1iQ1 \le i \le Q)에는 두 정수 aia_ibib_i (0ai,bi<N0 \le a_i, b_i < N, aibia_i \ne b_i)가 공백을 사이에 두고 주어집니다.

출력

각 질의마다 aia_i번 정점에서 출발해 bib_i번 정점에 도착하는 최단 경로의 길이를 입력에 주어진 순서대로 한 줄에 하나씩 출력합니다. 그러한 최단 경로가 없으면 1-1을 출력합니다.