만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

말

시간 제한2초메모리 제한256 MB

요약
호환 그래프와 대기열 a가 주어질 때, a와 교환되는 최소 대기열 b를 사전순으로 구하고 각각의 해시 값을 998244353으로 나눈 나머지로 출력합니다.
난이도

어려움10점 중 10점

유형
그래프, 문자열, 그리디
정답자
아직 제출이 없습니다

문제

빅 호스(Big Horse)는 말의 신이다. 그에게는 서로 다른 nn 종류의 말이 있다. 눈이 그리 좋지 않아서 같은 종류의 말은 구별하지 못한다.

이제 그는 mm 마리의 말을 한 줄로 세우려고 한다. 말들은 마음대로 자리를 바꿀 수 있다. 다만 인접한 두 말은 두 말의 종류가 친구일 때만 자리를 바꿀 수 있다. 두 줄은 한쪽에서 유한 번의 자리 바꿈으로 다른 쪽에 도달할 수 있을 때, 그리고 그때에만 동등하다고 본다.

빅 호스에게는 줄 a=(a1,…,am)a = (a_1, \ldots, a_m)이 있다. 그는 이 줄의 왼쪽에 말을 더 세우고 싶지만, 왼쪽과 오른쪽을 구별하지 못한다. 그래서 bb가 aa와 교환 가능하도록 하는 줄 b=(b1,…,bk)b = (b_1, \ldots, b_k)를 붙이려 한다. 즉, b1,…,bk,a1,…,amb_1, \ldots, b_k, a_1, \ldots, a_m이 a1,…,am,b1,…,bka_1, \ldots, a_m, b_1, \ldots, b_k와 동등해야 한다.

그는 극소인 줄 bb에만 관심이 있다. 구체적으로 다음 조건을 만족하는 bb를 찾는다.

  • bb는 aa와 교환 가능하다.
  • cc와 dd가 모두 aa와 교환 가능할 때, bb는 c1,…,ck′,d1,…,dk′′c_1, \ldots, c_{k'}, d_1, \ldots, d_{k''}와 동등하지 않다.
  • bb는 bb와 동등한 모든 줄 가운데 사전식 순서로 가장 앞선다.

극소인 줄은 많아야 nn개라고 한다. 이 줄들을 찾는 일을 도와 달라.

입력

첫 줄에 정수 nn (1≤n≤2001 \le n \le 200)이 주어진다.

이어서 n−1n - 1개의 줄이 주어진다. ii번째 줄에는 n−in - i개의 정수가 있다. 이 줄의 jj번째 정수는 종류 ii의 말과 종류 i+ji + j의 말이 자리를 바꿀 수 있으면 11, 아니면 00이다.

다음 줄에는 정수 mm (1≤m≤3000001 \le m \le 300000)이 주어진다.

마지막 줄에는 줄에 선 말의 종류 a1,…,ama_1, \ldots, a_m이 주어진다 (1≤ai≤n1 \le a_i \le n).

출력

극소인 줄을 한 줄에 하나씩 출력한다. 줄이 매우 길 수 있으므로, 극소인 줄이 bb일 때 해시값 b1+b2⋅(n+1)+…+bk⋅(n+1)(k−1)b_1 + b_2 \cdot (n + 1) + \ldots + b_k \cdot (n + 1)^{(k - 1)}을 998244353998244353으로 나눈 나머지만 출력하면 된다.

극소인 줄은 사전식 순서로 출력한다. 해시를 계산하기 전에 먼저 정렬해야 한다.

힌트

예시에 나오는 극소인 줄은 (1)(1)과 (2,3)(2, 3)이다.

예제1

  1. 예제 1

    입력
    3
    1 1
    0
    5
    2 1 3 2 3
    
    예상 출력
    1
    14