生成树
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

首先给出一些简单的概念:
  •  对于一张 无向图 ,树  是 G 的生成树当且仅当 E'是 E的子集。
  •  两棵 G 的生成树是不同的当且仅当它们使用的边集不同。
  • -集合 表示图 G 所有不同的生成树形成的集合。
  • -函数 s(G,T) 来衡量树 T 和图 G 的相似度,它的值等于同时出现在
  • T 和 G 中的边的数量。
现在给出两张 n 个点的无向图 G_1,G_2,你需要求:

输入描述:

第一行输入一个整数  表示点数。
接下来 n 行每行一个长度为 n 的 01 串,其中第 i 行第 j 位 描述 G_1 中 i 到 j 是否有一条边。
接下来 n 行每行一个长度为 n 的 01 串,其中第 i 行第 j 位 描述 G_2 中 i 到 j 是否有一条边。
输入保证:


输出描述:

输出一行一个整数表示答案,答案可能很大,你只需要输出对 998244353 取模后的结果。
示例1

输入

复制
3
011
101
110
010
101
010

输出

复制
4