#P1063. Flip and Shift

Flip and Shift

问题描述

这个谜题由一个椭圆形轨道上的随机序列组成,序列包含 mm 个黑色盘子和 nn 个白色盘子。轨道上有一个旋转门,可以翻转(即反转)三个连续的盘子。在图1中,轨道上有8个黑色盘子和10个白色盘子。你可以旋转转门来翻转其中的三个盘子,或者将轨道上的每个盘子顺时针移动一个位置(图1)。

这个谜题的目标是通过翻转和移动操作,将相同颜色的盘子聚集到相邻的位置(图2)。

你需要编写一个程序,判断给定的序列是否可以达成目标。如果可以达成目标,则输出“YES”;否则输出“NO”。

输入

输入包含 TT 个测试用例。测试用例的数量 TT 在第一行给出。接下来的 TT 行,每行给出一个测试用例。每个测试用例包含一个整数(表示 m+nm + n 的值)和一个由 m+nm + n 个0和1组成的序列,表示初始序列。0表示白色盘子,1表示黑色盘子。m+nm + n 的值至少为10,最多不超过30。数字之间用空格分隔。

输出

对于每个测试用例,输出“YES”或“NO”,每个结果占一行。

示例输入

2 
18 0 0 1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1 
14 1 1 0 0 1 1 1 0 0 1 1 0 1 0 

示例输出

YES
NO

来源

Taejon 2001