第八届“英拿科技杯”上海高校金马程序设计联赛暨东华大学邀请赛

J. 离离枯荣

单点时限: 1.0 sec

内存限制: 512 MB

莫顿编码是将多维数据转化为一维数据的编码。对于一个二维数组,我们可以不断以Z型方式遍历所有数字,按照遍历顺序得到的新数组,即为我们压缩出来的一维数据。

以$2\times 2$的数组为例:
image-20240515200851320.png

遍历顺序为:左上角、右上角、左下角、右下角。依次取出4个位置的数据。1 2 3 4

以$4\times 4$的数组为例:
image-20240515201111509.png
对于左上角、右上角、左下角、右下角四个$2\times 2$的小数组,遍历规则依旧是Z型。

此时若我们把四个小数组看成4个数字,则(1234) (5678) (9 10 11 12) (13 14 15 16)仍然是Z型遍历。

同理,我们可以得到$8\times 8, 16\times 16$的遍历顺序:

image-20240515201323098.png
给定一个$n\times n(1 \leq n \leq 1024)$的二维数组,数组只有小写英文字母组成。其中所有数据保证$n = 2^m(m \geq 0)$

请你输出在二维数组经过莫顿编码的编码规则后得到的一维字符序列。

输入格式

第一行一个正整数$n$,表示数组大小。

接下来$n$行,每行$n$个小写英文字母。表示需要编码的二维字符数组。

输出格式

输出共一行,共$n\times n$个小写英文字母,表示你的答案。

样例

Input
8
fjbyjuyf
dmwjnmmz
symxmljf
liwhrkro
malwwwcb
gbgzxpfn
fzzfuwzn
kjoluoef
Output
fjdmbywjsylimxwhjunmyfmzmlrkjfromagblwgzfzkjzfolwwxpcbfnuwuoznef