사탕 나누기 (라지)

시간 제한5초메모리 제한512 MB

요약
사탕을 xor 합이 같은 두 무더기로 나누고 자신이 가져가는 무더기의 일반 합이 가장 크도록 합니다.
난이도

보통10점 중 5점

유형
비트 연산, 그리디
정답자
아직 제출이 없습니다

문제

숀과 패트릭은 형제다. 부모님에게서 사탕이 가득 든 봉지를 받았다. 사탕마다 양의 정수 값이 매겨져 있고, 두 사람은 이 사탕을 나눠 가지려고 한다. 먼저 숀이 사탕을 두 더미로 나눈 다음 한 더미를 골라 패트릭에게 준다. 그러면 패트릭이 각 더미의 값을 계산한다. 더미의 값은 그 더미에 든 사탕 값의 합이다. 두 더미의 값이 같지 않다고 판단하면 패트릭은 울음을 터뜨린다.

패트릭은 아직 어려서 덧셈을 제대로 하지 못한다. 이진법 덧셈은 거의 할 줄 알지만, 1과 1을 더할 때 올림을 윗자리로 넘기는 것을 늘 잊는다. 예를 들어 12(이진수 1100)와 5(이진수 101)를 더하면 오른쪽 두 자리는 제대로 더하지만, 셋째 자리에서는 올림을 윗자리로 넘기지 않는다.

  1100
+ 0101
------
  1001

셋째 자리의 올림 없이 마지막 자리까지 더하고 나면 결과는 9(이진수 1001)다. 패트릭의 계산은 이런 식이다.

5 + 4 = 1
7 + 9 = 14
50 + 10 = 56

숀은 덧셈을 아주 잘한다. 동생을 울리지 않으면서 값을 최대한 많이 가져가고 싶다. 가능하다면 봉지를 비어 있지 않은 두 더미로 나누어, 패트릭이 두 더미의 값을 같다고 여기게 만든다. 봉지에 든 사탕 값이 모두 주어질 때 이런 분할이 가능한지 판정하고, 가능하다면 숀이 가지는 더미 값의 최댓값을 구한다.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다. 각 테스트 케이스는 두 줄이다. 첫째 줄에는 봉지에 든 사탕의 개수 NN이 주어지고, 둘째 줄에는 사탕 NN개의 값 CiC_i가 공백 하나로 구분되어 주어진다.

제한

  • 1≤T≤1001 \le T \le 100
  • 2≤N≤10002 \le N \le 1000
  • 1≤Ci≤1061 \le C_i \le 10^6

출력

각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호다. 패트릭을 울리지 않게 나눌 방법이 없으면 yy는 문자열 NO다. 나눌 수 있으면 yy는 숀이 가지는 더미의 값이다.

예제4

  1. 예제 1

    입력
    2
    5
    1 2 3 4 5
    3
    3 5 6
    
    예상 출력
    Case #1: NO
    Case #2: 11
    
  2. 예제 2

    입력
    1
    2
    7 7
    
    예상 출력
    Case #1: 7
    
  3. 예제 3

    입력
    1
    2
    1 2
    
    예상 출력
    Case #1: NO
    
  4. 예제 4

    입력
    3
    3
    1 1 1
    4
    1 1 1 1
    2
    1000000 1000000
    
    예상 출력
    Case #1: NO
    Case #2: 3
    Case #3: 1000000