#P7242. C.排列交换

C.排列交换

C.排列交换

小聪有一个排列 p1,p2,,pnp_1, p_2, \dots, p_n

小聪觉得小小的排列比较可爱,他希望把这个排列字典序变得尽量小。

这个问题太简单了,小聪的朋友小潘决定给他上点强度。

小潘给出了一个大小为 n×nn\times n 的对称 01 矩阵 AA。小潘命令小聪只能交换满足 Ai,j=1A_{i,j}=1pip_ipjp_j。交换的顺序和次数都不限。

小聪想知道,在小潘的要求下,他的排列最小能是多少。

输入格式

第一行一个整数 nn

接下来一行 nn 个数 p1,p2,,pnp_1, p_2, \dots, p_n 表示排列。

接下来 nn 行描述矩阵 AA

输出格式

输出一行,表示字典序最小的排列。

样例输入1

7
5 2 4 3 6 7 1
0001001
0000000
0000010
1000001
0000000
0010000
1001000

样例输出1

1 2 4 3 6 7 5

样例输入2

5
4 2 1 5 3
00100
00011
10010
01101
01010

样例输出2

1 2 3 4 5

数据范围

对于 40%40\% 的数据,1n111 \leq n \leq 11

对于 70%70\% 的数据,1n201 \leq n \leq 20

对于 100%100\% 的数据,1n3001 \leq n \leq 300,保证 AA 是对称矩阵且对角线为 00