在 16 世纪,还没有我们今天这样的计算机。另一方面,即使在那个时代,保护信息不被无关人员读取也是非常必要的。一些古老的方法,比如剃光奴隶的头发,把信息写在他的头上,等到他的头发重新长出来,然后让他穿过充满敌人的区域,这些方法虽然可能有效,但需要花费很长时间。这就是为什么必须发明新方法的原因。例如,意大利数学家吉罗拉莫·卡尔达诺(Girolamo Cardano)是第一个描述栅格密码(Grille cipher)的人。
为了进行加密和解密,你需要一个工具(基本上就是密钥),称为“栅格”(grille)。通信双方(爱丽丝和鲍勃)必须拥有相同的栅格。栅格看起来像一个由 $N \times N$ 个单位正方形组成的网格,其中一些正方形是实心的,另一些则被挖空以形成“孔洞”。
假设我们有一个含有 $m$ 个孔洞的栅格。在加密时,我们将消息的前 $m$ 个字母写入孔洞中(从第一行开始,从左到右,然后继续写后面的行)。然后,我们将栅格顺时针旋转 90 度,并将另外 $m$ 个字母写入孔洞中(同样是从左到右,从上到下)。之后,我们再将栅格旋转 90 度,并写入另外 $m$ 个字母。最后,我们第四次重复相同的操作。在最后,我们用随机字母填充剩余的位置(如果有的话),以使密文更加安全。请注意,旋转的是栅格,而不是消息!
在解密时,我们基本上使用相同的算法,只是读取字母而不是写入它们。
输入格式
输入包含多组测试数据。每组测试数据包含一个栅格的描述和一个密文。你的任务是解密该消息并将明文输出。
每组测试数据以一行开始,包含一个整数 $N$($1 \le N \le 1000$),表示栅格的大小。接下来的 $N$ 行包含栅格的描述。这些行中的每一行都恰好包含 $N$ 个字符,字符要么是井号 #(表示实心/不透明材料),要么是大写字母 O(表示孔洞)。
注意:在实际应用中,栅格的孔洞会经过精心设计,使得密文的任何位置都不会被使用超过一次。但在本题中,这并不能保证。某些栅格可能包含在旋转后指向密文相同位置/字母的孔洞。然而,解密算法仍然是相同的。
在栅格描述之后,还有另外 $N$ 行包含加密后的消息。其中的每一行都恰好包含 $N$ 个字符——均为大写英文字母。
最后一组测试数据后面紧跟一行,包含一个零。
输出格式
对于每组测试数据,在一行中输出解密后的消息(明文),不包含空格。
样例
输入样例 1
4 ##O# #O#O #### ###O ARAO PCEM LEEN TURC 3 O#O ### O#O ABC DEF GHI 0
输出样例 1
ACMCENTRALEUROPE ACGIACGIACGIACGI