西楼暮,一帘疏雨
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

日下西楼,独剩下帘外的细雨,怕是只能在梦中去寻找春的踪迹。月出东山,抬头仰望雨后夜空,望着手中那本紫色著名教材,一时间五味杂陈。

马上就要线代考试了,而小Y平时一直摸鱼没有好好学线代,于是他来请教你如何求行列式的值。

这是个 的行列式,但是与一般的行列式不同,这个行列式的元素是一个三进制串(无前导零)。所谓三进制串,是指每一位上的数字都不过 2,例如,“10201”、“22222”、“1212”都是三进制串,它们对应的十进制数分别是 10024250。而且这个行列式的值的定义也和一般的行列式的值的定义不同,它是:


其中,S_n 是全排列的集合, 是一个全排列,如果 的逆序数如果为奇数则 1,否则为 2

关于逆序数的定义,它是一个排列中满足 的数对的个数,即:


其中,如果满足关系 1,否则为 0。例如,“312”的逆序数是 2,而“132”的逆序数是 1

答案可能过大,你需要对 998244353 取模。

输入描述:

第一行输入一个正整数 ,表示行列式的大小。

接下来 n 行,每行 n 个三进制串 ,表示行列式第 i 行第 j 列的元素。

输出描述:

输出一个正整数,表示该行列式的值。
示例1

输入

复制
3
1 1 1
1 2 2
1 2 1

输出

复制
512

说明

样例1解释:总共有六个排列,分别是 a_{11}a_{22}a_{33}a_{12}a_{23}a_{31}a_{13}a_{21}a_{32}a_{11}a_{23}a_{32}a_{12}a_{21}a_{33}a_{13}a_{22}a_{31},它们的 \amalg(\sigma) 分别是 222111,所以答案是:
2\times a_{11}a_{22}a_{33}\times2\times a_{12}a_{23}a_{31}\times2\times a_{13}a_{21}a_{32}\times1\times a_{11}a_{23}a_{32}\times1\times a_{12}a_{21}a_{33}\times1\times a_{13}a_{22}a_{31} \\=2\times(1\times2\times1)\times2\times(1\times2\times1)\times2\times(1\times2\times1)\times1\times(1\times2\times2)\times1\times(1\times1\times1)\times1\times(1\times2\times1)=512
示例2

输入

复制
3
102 121 101
110 121 212
100 222 201

输出

复制
535147287