Big Horse는 말의 신입니다. 그는 $n$ 종류의 서로 다른 말을 가지고 있습니다. 눈이 좋지 않은 그는 같은 종류의 말들을 구분하지 못합니다.
이제 그는 $m$ 마리의 말을 줄 세우려고 합니다. 하지만 말들이 너무 활발해서 마음대로 위치를 바꿀 수 있습니다. Big Horse는 인접한 두 말만 자리를 바꿀 수 있으며, 이는 두 종류의 말이 서로 친구일 때만 가능하다는 것을 알아차렸습니다. 말들은 언제든지 위치를 바꿀 수 있으므로, Big Horse는 한 줄에서 유한 번의 교환을 통해 다른 줄로 도달할 수 있는 경우 두 줄을 동등하다고 간주합니다.
현재 Big Horse는 $a = (a_1, \dots, a_m)$인 말들의 줄을 가지고 있습니다. 그는 이 줄의 왼쪽에 다른 말들을 추가하려고 합니다. 하지만 Big Horse는 왼쪽과 오른쪽을 구분하지 못합니다. 그래서 그는 $b = (b_1, \dots, b_k)$라는 줄을 추가하여 $b$가 $a$와 교환 가능하도록 만들고 싶어 합니다. 즉, $b_1, \dots, b_k, a_1, \dots, a_m$은 $a_1, \dots, a_m, b_1, \dots, b_k$와 동등합니다. 하지만 이러한 $b$의 개수는 너무 많을 수 있습니다. Big Horse는 다음과 같은 "최소" 줄 $b$에만 관심이 있습니다. 구체적으로, 그는 다음 조건을 만족하는 $b$에 관심이 있습니다.
- $b$는 $a$와 교환 가능하다.
- $b$는 $c$가 $a$와 교환 가능하고 $d$가 $a$와 교환 가능한 $c_1, \dots, c_{k'}, d_1, \dots, d_{k''}$와 동등하지 않다.
- $b$는 자신과 동등한 모든 줄 중에서 사전순으로 가장 작다.
그는 이러한 최소 줄이 최대 $n$개 존재한다는 것을 알아냈습니다. 그는 당신에게 이 줄들을 찾는 것을 도와달라고 요청합니다.
입력
첫 번째 줄에는 정수 $n$ ($1 \le n \le 200$)이 주어집니다. 그다음 $n - 1$개의 줄이 이어집니다. $i$번째 줄에는 $n - i$개의 정수가 주어집니다. 이 줄의 $j$번째 정수는 종류 $i$의 말과 종류 $i + j$의 말이 자리를 바꿀 수 있으면 1, 아니면 0입니다. 다음 줄에는 정수 $m$ ($1 \le m \le 300\,000$)이 주어집니다. 마지막 줄에는 줄에 있는 말들의 종류를 나타내는 $m$개의 정수 $a_1, \dots, a_m$ ($1 \le a_i \le n$)이 주어집니다.
출력
최소 줄들을 한 줄에 하나씩 출력합니다. 줄이 너무 길 수 있으므로, 최소 줄이 $b$일 때, $b_1 + b_2 \cdot (n + 1) + \dots + b_k \cdot (n + 1)^{(k-1)}$을 $998\,244\,353$으로 나눈 해시 값만 출력하면 됩니다. 최소 줄들을 사전순으로 정렬하여 출력해야 합니다(해싱하기 전에 정렬하십시오).
예제
입력 1
3 1 1 0 5 2 1 3 2 3
출력 1
1 14
참고
예제에서 두 개의 최소 줄은 (1)과 (2, 3)입니다.