QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 256 MB 満点: 100

#896. Những chú ngựa

統計

Big Horse là Thần Ngựa. Ông có $n$ loại ngựa khác nhau. Vì mắt ông không được tốt lắm, ông không thể phân biệt được các con ngựa cùng loại.

Hiện tại, ông muốn sắp xếp $m$ con ngựa thành một hàng đợi. Nhưng những con ngựa này rất năng động nên chúng có thể thay đổi vị trí tùy ý. Tuy nhiên, Big Horse nhận thấy rằng chỉ có hai con ngựa đứng cạnh nhau mới có thể đổi chỗ cho nhau, và điều này chỉ xảy ra nếu hai loại ngựa đó là bạn của nhau. Vì các con ngựa có thể đổi vị trí bất cứ lúc nào, Big Horse coi hai hàng đợi là tương đương nếu và chỉ nếu hàng đợi này có thể đạt được từ hàng đợi kia thông qua một số hữu hạn các lần đổi chỗ.

Bây giờ Big Horse có một hàng đợi $a = (a_1, \dots, a_m)$. Ông muốn thêm một số con ngựa khác vào bên trái hàng đợi này. Tuy nhiên, Big Horse không phân biệt được trái và phải. Vì vậy, ông muốn thêm một hàng đợi $b = (b_1, \dots, b_k)$ sao cho $b$ giao hoán với $a$: nói cách khác, $b_1, \dots, b_k, a_1, \dots, a_m$ tương đương với $a_1, \dots, a_m, b_1, \dots, b_k$. Tuy nhiên, số lượng các hàng đợi $b$ như vậy có thể quá lớn. Big Horse chỉ quan tâm đến các hàng đợi $b$ "tối thiểu". Cụ thể, ông quan tâm đến các $b$ thỏa mãn:

  • $b$ giao hoán với $a$,
  • $b$ không tương đương với $c_1, \dots, c_{k'}$, $d_1, \dots, d_{k''}$ sao cho $c$ giao hoán với $a$ và $d$ giao hoán với $a$,
  • $b$ là hàng đợi nhỏ nhất theo thứ tự từ điển trong số tất cả các hàng đợi tương đương với nó.

Ông nhận thấy rằng có tối đa $n$ hàng đợi tối thiểu. Ông nhờ bạn giúp tìm ra chúng.

Dữ liệu vào

Dòng đầu tiên chứa một số nguyên $n$ ($1 \le n \le 200$).

Tiếp theo là $n - 1$ dòng. Trong dòng thứ $i$, có $n - i$ số nguyên. Số nguyên thứ $j$ trong dòng thứ $i$ là $1$ nếu một con ngựa loại $i$ có thể đổi chỗ với một con ngựa loại $i + j$, và $0$ nếu ngược lại.

Dòng tiếp theo chứa một số nguyên $m$ ($1 \le m \le 300\,000$).

Dòng cuối cùng chứa $m$ số nguyên $a_1, \dots, a_m$: các loại ngựa trong hàng đợi ($1 \le a_i \le n$).

Dữ liệu ra

In ra các hàng đợi tối thiểu, mỗi hàng đợi trên một dòng. Vì một hàng đợi có thể quá dài, khi hàng đợi tối thiểu là $b$, bạn chỉ cần in ra giá trị băm $b_1 + b_2 \cdot (n + 1) + \dots + b_k \cdot (n + 1)^{(k-1)}$ theo modulo $998\,244\,353$.

Bạn nên in ra các hàng đợi tối thiểu theo thứ tự từ điển (sắp xếp chúng trước khi tính giá trị băm).

Ví dụ

Ví dụ 1

3
1 1
0
5
2 1 3 2 3

Ví dụ 1

1
14

Ghi chú

Hai hàng đợi tối thiểu trong ví dụ là $(1)$ và $(2, 3)$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.