#P14476. 矩阵绘画

矩阵绘画

题目描述

艾莉芬喜欢画画。有一天,她研究起了如何画矩阵。

具体来说,艾莉芬想画一个 n×nn \times n 的 01 矩阵。她会从一个全为 0 的矩阵开始画,每次可以选一行或者一列进行涂色。如果选择了第 ii 行,她会将其中第 1 到 aia_i 列的值都加上 1;如果选择了第 ii 列,她会将其中第 1 到 bib_i 行的值都加上 1。她不会将一个位置涂色超过一次,因为这样这个位置的值会大于 1。其中,{ai},{bi}\{a_i\}, \{b_i\} 是两个长为 nn 的数列。

艾莉芬还有一个 n×nn \times n 的草稿矩阵,草稿矩阵中的值可能是 0、1 或者字符 ?。如果草稿矩阵中一个位置的值是 0 或 1,那么她画出的矩阵的这个位置就必须是相应的值;如果一个位置的值是 ?,那么这个位置的值就没有限制。

现在艾莉芬想知道她能画出多少种不同的 01 矩阵,两个矩阵不同当且仅当至少存在一个位置的值不同。由于这个数可能很大,只需要求出这个数对 109+710^9 + 7 取模后的结果。

输入格式

注:由于洛谷的评测限制,在洛谷上提交本题请使用标准输入输出,不要使用文件输入输出。

第一行一个正整数 nn

之后一行 nn 个非负整数表示 aia_i

之后一行 nn 个非负整数表示 bib_i

之后 nn 行,每行一个长度为 nn 的字符串,表示题中给定的草稿矩阵。

输出格式

一行一个整数表示答案。

3
1 2 3
1 2 3
?11
???
?0?
2
1
0
0
1
0

提示

【样例解释 1】

可能的矩阵为以下 2 种:

111 011
011 011
001 001

【样例解释 2】

不存在符合要求的矩阵。

【测试点约束】

所有测试数据均满足:1n50001 \leq n \leq 50000ai,bin0 \leq a_i, b_i \leq n,草稿矩阵中的元素 {0,1,?}\in \{0, 1, ?\}

::cute-table{tuack}

测试点编号 nn \leq 特殊性质
131 \sim 3 88
464 \sim 6 2020
797 \sim 9 100100
101310 \sim 13 500500
141714 \sim 17 50005000 a1=0a_1 = 0
182118 \sim 21 ai,biia_i, b_i \leq i
222522 \sim 25

每组测试点的前两个均满足:给定的矩阵仅包含问号。