#CF2147C. 兔子

兔子

C. 兔子

每次测试时间限制: 22
每次测试内存限制: 256256 兆字节

你有 nn 个花盆排成一行,编号为 11nn,从左到右。
有些花盆里装有花,有些是空的。你会得到一个长度为 nn 的二进制字符串 ss,其中 si=1s_i = 1 表示该花盆有花,si=0s_i = 0 表示空花盆。

你想拍一张兔子和花朵的照片,所以你要在每个空花盆si=0s_i = 0)里都放一只兔子。
每只兔子可以自行选择向左或向右看。

兔子很调皮,它们会试图跳跃,这可能会破坏画面。

  • 每只兔子会准备跳到它看的方向的下一个花盆
  • 但如果那个花盆里已经有兔子,或者另一只兔子正从对面准备跳进同一个花盆,它们就不会跳。
  • 兔子不会跳出边界(在花盆 11 向左看的兔子不会跳,在花盆 nn 向右看的兔子也不会跳)。

你的目标是给每只兔子指定一个方向,使得没有任何兔子实际发生跳跃
你需要判断是否存在这样的方向分配方案。


输入

每个测试点包含多个测试用例。
第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例:

  • 第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5
  • 第二行包含一个长度为 nn 的二进制字符串 ss,表示有花(11)或空(00

所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出

对于每个测试用例,如果存在满足条件的兔子方向分配,输出 "YES",否则输出 "NO"
大小写不敏感(例如 "yEs", "yes", "Yes", "YES" 都算 "YES")。


示例

输入:

12
4
0100
3
000
8
11011011
5
00100
1
1
5
01011
2
01
7
0101011
7
1101010
5
11001
4
1101
9
001101100

输出:

YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
NO
NO

注释

第一个测试用例n=4n=4, s=0100s=\text{0100}):
花盆 11 有花,2,3,42,3,4 为空。
一种有效配置:

  • 花盆 22 的兔子向右看
  • 花盆 33 的兔子向左看
  • 花盆 44 的兔子向左看

结果:

  • 花盆 22 的兔子想跳到 33,但 33 有兔子且向左看,不会冲突(因为对跳时双方都不跳)
  • 花盆 33 的兔子想跳到 22,但 22 有兔子且向右看,同样不跳
  • 花盆 44 的兔子想跳到 33,但 33 已有兔子,所以不跳

第二个测试用例n=3n=3, s=000s=\text{000}):
全部为空。
一种有效配置:

  • 花盆 11 向左看(边界,不跳)
  • 花盆 22 向右看
  • 花盆 33 向左看

结果:

  • 花盆 22 想跳到 33,但 33 有兔子,不跳
  • 花盆 33 想跳到 22,但 22 有兔子,不跳

第三个测试用例n=8n=8, s=11011011s=\text{11011011})输出 "NO",可以证明不存在有效分配。