문제
연속된 3개의 디스크를 뒤집을 수 있는 회전판이 있는 타원형의 트랙에 검은색과 흰색의 디스크가 무작위로 섞여있는 퍼즐이 있다. 그림 1처럼 트랙에 8개의 검정색 디스크와 10개의 흰색 디스크가 있으면, 회전판위에 있는 3개의 디스크를 뒤집거나 디스크들을 시계방향으로 한 칸씩 이동할 수 있다.
이와 같은 방법으로 같은 색끼리 인접하게 모으는 것이 이 퍼즐의 목표이다.
당신은 주어진 순서가 목표에 도달할 수 있는지를 판단하는 프로그램을 만드는 것이다. 가능하다면 “YES”, 불가능하면 “NO”를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 구성된다. 첫 번째 줄에는 테스트케이스의 개수 T가 입력된다. 그 다음부터 T줄에 각 테스트 케이스가 주어진다. 각 테스트케이스의 첫 정수는 디스크의 개수(흰색+검정색 최소 10개, 최대 30개)이고 이어서 디스크의 처음 상태가 0또 1로 공백으로 구분하여 주어진다. 0은 흰색 디스크, 1은 검정색 디스크이다.
출력
각 테스트케이스 별로 “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
출처
ACM 아시아지역 대전2001 F