小苯的01合并
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有两个长度分别为 nm 的、仅由字符 \texttt{`0'}\texttt{`1'} 组成的字符串 AB,下标从 1 开始。

\hspace{15pt}他可以对字符串 A 进行任意次操作,每次操作选择相邻的两个字符 c_ic_{i+1},将它们替换为它们的异或值(即 c_i \oplus c_{i+1}),从而字符串长度减少 1
\hspace{15pt}例如,对于 A = \texttt{,选择前两个字符 \texttt{ 替换为 0 \oplus 1 = 1,得到新字符串 \texttt{

\hspace{15pt}你的任务就是判断,是否可以通过若干次(可以是零次)操作,将字符串 A 变成字符串 B

【名词解释】
\hspace{15pt}\oplus:指位运算中的按位异或(Bitwise XOR),对两个整数的二进制表示按位进行异或运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入两个整数 n, m\left(1 \leqq m \leqq n \leqq 5 \times 10^5\right),表示字符串 AB 的长度。
\hspace{15pt}第二行输入一个长度为 n 的字符串 A,只包含字符 \texttt{`0'}\texttt{`1'}
\hspace{15pt}第三行输入一个长度为 m 的字符串 B,只包含字符 \texttt{`0'}\texttt{`1'}

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 5 \times 10^5

输出描述:

\hspace{15pt}对于每组数据,如果可以将 A 变成 B,输出 \texttt{YES},否则输出 \texttt{NO}
示例1

输入

复制
2
4 2
0110
00
5 1
11010
0

输出

复制
YES
NO

说明

\hspace{15pt}对于第一组测试数据,A = \texttt{B = \texttt{
\hspace{23pt}\bullet\,选择前两个字符 \texttt{01} 替换为 0\oplus1=1,得到 \texttt{
\hspace{23pt}\bullet\,选择前两个字符 \texttt{11} 替换为 1\oplus1=0,得到 \texttt{
\hspace{15pt}此时 AB 相同,输出 \texttt{YES}