吴老板喝茶
题号:NC21435
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

吴老板喜欢喝茶,喝茶后就喜欢躺在床上想一些稀奇古怪二进制数学问题。
今晚他喝完茶,构思了道这样的问题:
给你a数列a[1].a[2],...a[n-1]和b数列b[1],b[2],...,b[n-1]。
现在需要你构造新数列t[1],t[2],...,t[n],使得t[i]|t[i+1]=a[i],t[i]&t[i+1]=b[i]。(“|”表示位运算“或”,即“or”。“&”表示位运算“与”,即“and”)。
最终询问是否可以构造出t数列,如果可以输出"YES",否则输出"NO"

输入描述:

第一行:一个整数n,代表需要构造的数列t的长度第二行:n-1个整数,代表a[1],a[2],...a[n-1]第三行:n-1个整数,代表b[1],b[2],...b[n-1]

输出描述:

输出一行,如果存在满足要求的t数列,输出"YES",否则输出"NO"
示例1

输入

复制
4
3 3 2
1 2 0

输出

复制
YES

说明

存在t数列的构造 1 3 2 01|3=3 1&3=13|2=3 3&2=22|0=2 2&0=0
示例2

输入

复制
3
1 3
3 2

输出

复制
NO

说明

不存在构造

备注:

数据范围:
2≤ n≤1e5
0≤ ai≤3
0≤ bi≤3
0≤ ti≤3