아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

돌 게임

시간 제한1초메모리 제한128 MB

요약
각 수에서 더미의 절반 이하만큼만 돌을 가져갈 수 있는 게임에서, 더미 크기가 2e18까지 주어질 때 선수가 이길 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
게임 이론, 수학, 구현, 비트 연산
정답자
아직 제출이 없습니다

문제

당신과 친구가 여러 개의 돌 더미에서 번갈아 돌을 가져가는 게임을 합니다. 처음에 NN개의 돌 더미가 있으며, 각각 a1,a2,a3,…,aNa_1, a_2, a_3, \ldots, a_N개의 돌이 들어 있습니다. 각 차례에 플레이어는 돌 더미 하나를 골라 최소 11개 이상, 그 더미에 있는 돌 개수의 절반 이하(즉 ⌊ai/2⌋\lfloor a_i / 2 \rfloor개 이하)만큼의 돌을 가져가야 합니다. 어떤 움직임도 할 수 없는 플레이어가 패배합니다.

예를 들어 돌이 각각 55개, 11개, 22개인 세 더미가 있다면, 플레이어는 첫 번째 더미에서 11개 또는 22개를 가져갈 수 있고, 두 번째 더미에서는 아무것도 가져갈 수 없으며, 세 번째 더미에서는 11개만 가져갈 수 있습니다. 두 번째 더미에서 돌을 가져갈 수 없는 이유는 11이 그 더미의 크기인 11의 절반보다 크기 때문입니다.

두 사람 모두 최적으로 플레이하고 당신이 먼저 움직인다고 할 때, 당신에게 승리하는 수가 있는지 판정하세요. 승리하는 수란, 그 수를 둔 뒤 친구가 어떻게 대응하더라도 결국 당신이 이길 수 있는 수를 말합니다.

입력

첫째 줄에 테스트 케이스의 수를 나타내는 정수 TT (T≤100T \le 100)가 주어집니다. 각 테스트 케이스의 첫째 줄에는 돌 더미의 수를 나타내는 정수 NN (1≤N≤1001 \le N \le 100)이 주어집니다. 다음 줄에는 각 더미의 돌 개수를 나타내는 NN개의 정수 a1,a2,a3,…,aNa_1, a_2, a_3, \ldots, a_N (1≤ai≤2×10181 \le a_i \le 2 \times 10^{18})이 주어집니다.

출력

각 테스트 케이스마다 당신에게 승리하는 수가 있으면 "YES"를, 없으면 "NO"를 출력하세요.

예제1

  1. 예제 1

    입력
    4
    2
    4 4
    3
    1 2 3
    3
    2 4 6
    3
    1 2 1
    
    예상 출력
    NO
    YES
    NO
    YES