어둠 속의 미로

각 방의 이웃이 시계 방향으로 주어진 평면 미로에서, 시작 방마다 오른손 법칙으로 벽을 따라 걷다가 처음 시작 방으로 돌아올 때까지 지나는 최대 복도 수를 구한다.

보통7그래프DFS시뮬레이션구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

NN개를 복도로 이어 만든 미로가 있다. 방에는 11번부터 NN번까지 번호가 붙어 있고, 방은 모두 원 모양이다. 복도는 다음 조건을 만족한다.

  • 복도 하나는 서로 다른 두 방을 잇는다.
  • 같은 방 쌍을 잇는 복도가 둘 이상 있는 일은 없다.
  • 모든 방에는 복도가 적어도 하나 이어져 있다.

미로 안은 불이 모두 꺼져 있어서 자신이 어디에 있는지 볼 수 없다.

이 미로를 지나는 한 가지 방법은 출발한 방의 벽 어느 지점에 오른손을 대고, 손을 벽에서 떼지 않은 채 복도와 다른 방을 지나 계속 앞으로 걷는 것이다. 이렇게 걸으면 결국 출발한 방으로 돌아온다. 출발한 방에서 오른손을 어디에 대는지에 따라 처음 지나는 복도가 정해지므로, 걷는 경로도 달라진다.

미로 구조가 주어지면 질의 QQ개에 답해야 한다. 각 질의는 출발할 방 rr를 하나 지정한다. 방 rr에서 출발해 오른손을 벽에 댄 채 걷다가 방 rr로 처음 되돌아올 때까지 지나는 복도 개수의 최댓값을 구하라.

입력

첫째 줄에 정수 NN이 주어진다. (2N1000002 \le N \le 100\,000)

다음 NN개 줄에는 미로 구조가 주어진다. 그중 ii번째 줄에는 방 ii에 이어진 복도의 개수 kk와 그 복도가 이어지는 방 번호 c1 c2  ckc_1\ c_2\ \dots\ c_k가 주어진다. 방 번호는 방 ii에서 본 시계 방향 순서로 나열된다.

예를 들어 방 ii의 줄이 3 4 2 7이면 방 ii에는 복도가 3개 있고, 각각 방 4, 방 2, 방 7로 이어진다. 시계 방향 순서로 적혀 있으므로 아래 그림과 같은 배치가 된다.

다음 줄에 정수 QQ가 주어진다. (1QN1 \le Q \le N)

마지막 QQ개 줄에는 질의할 출발 방 번호 rr가 한 줄에 하나씩 주어진다. (1rN1 \le r \le N) 같은 방 번호가 두 번 주어지는 일은 없다.

미로에 있는 복도의 총개수를 MM이라 하면 MM은 모든 kk를 더한 값의 절반이다. MM200000200\,000을 넘지 않는다.

출력

질의가 주어진 순서대로 QQ개 줄에 답을 출력한다. ii번째 줄에는 ii번째 질의의 답, 곧 방 rr에서 출발해 방 rr로 처음 되돌아올 때까지 지나는 복도 개수의 최댓값을 출력한다.