数字序列
题号:NC19470
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给出两个互质的数p,q,它们定义了一个长为(p x q)的布尔序列.
其中A的第以及项都是已知的,并且我们已知长为(p x q)的数字序列B.
已知A满足:
定义集合
1,
其中,为逻辑异或,为逻辑或.所有数组下标,下同.
2,  若b[x] = b[x + p] 则 a[x] = a[x + p]
 若b[x] = b[x + q] 则 a[x] = a[x + q]
请你判断是否存在一个A满足限制. 存在则输出"Yes", 否则输出"No".

输入描述:

第一行两个数p,q.
之后一行q个数,表示A[0], A[p], A[2p],...
之后一行p - 1个数,表示A[q], A[2q], A[3p],...
之后一行p * q个数,表示B序列.
b[i] ∈ [0, 50)
0 ≤ p * q ≤ 104
p, q ≥ 2
gcd(p, q) = 1

输出描述:

一行,"Yes"或"No".
示例1

输入

复制
2 3
1 1 1
0
1 2 3 4 5 6

输出

复制
Yes

说明

对于样例1,显然A={0, 1, 0, 1, 0, 1}是合法的.
示例2

输入

复制
2 3
0 1 1
1
1 2 3 4 5 3

输出

复制
No

说明

对于样例2,容易发现A[5]被A[2]确定了,
此时A[1]取多少都不满足条件.