만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

직접 고르는 님

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

요약
앨리스가 고를 수 있는 비어 있지 않은 부분집합마다 밥이 이기도록 밥의 상자에서 힙을 하나씩 고릅니다. 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

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

문제

Alice와 Bob은 Nim 게임을 즐긴다. 힙의 크기가 a1,…,ana_1, \ldots, a_n일 때, 선공이 이기는 것은 a1⊕⋯⊕ana_1 \oplus \cdots \oplus a_n이 0이 아닐 때이고 그 경우에만 해당한다. 온라인 게임 중에는 시작 전에 캐릭터를 고르는 게임이 있어, 이를 Nim에 적용한 새 버전을 만들었다. 두 사람은 각자 여러 상자에 든 힙을 가진다. 첫 번째 단계에서 각 플레이어는 자신의 상자마다 힙을 정확히 하나씩 고른다. 두 번째 단계에서 Alice는 고른 힙들 중 비어 있지 않은 부분집합을 고르고, 선택된 힙들에서 Bob이 선공으로 일반 Nim을 시작한다. Bob은 Alice가 어떤 힙을 골랐는지 이미 안다. Alice가 두 번째 단계에서 어떤 부분집합을 고르더라도 Bob이 이기도록 Bob의 힙을 고르는 것을 도와라.

입력

첫 줄에 Alice가 고른 힙의 개수 nn (0≤n≤600 \le n \le 60)이 주어진다. n>0n > 0이면 다음 줄에 그 힙들의 크기 nn개가 주어지고, n=0n = 0이면 이 줄은 생략된다. 다음 줄에는 Bob 상자의 개수 mm (1≤m≤601 \le m \le 60)이 주어진다. 이어지는 mm개의 줄마다 상자 하나가 주어지며, 각 줄은 힙의 개수 kik_i (1≤ki≤50001 \le k_i \le 5000)로 시작하고 이어서 힙의 크기 kik_i개가 주어진다. 모든 힙의 크기는 1 이상 260−12^{60}-1 이하다. Bob 상자들의 힙 전체 개수는 5000을 넘지 않는다.

출력

Bob이 어떤 힙을 고르든 Alice가 결과 Nim 상태를 지는 상태로 만들 수 있다면 Bob은 이길 수 없으므로 −1-1을 출력한다. 그렇지 않으면 입력에서 상자가 주어진 순서대로, Bob이 각 상자에서 골라야 할 힙의 크기 mm개를 출력한다.

힌트

Nim에서는 여러 개의 돌 더미가 놓여 있다. 각 차례마다 플레이어는 아무 힙이나 골라 양의 개수의 돌을 가져간다. 마지막 돌을 가져간 플레이어가 이긴다.

예제2

  1. 예제 1

    입력
    2
    1 2
    2
    2 1 2
    3 1 2 3
    
    예상 출력
    -1
    
  2. 예제 2

    입력
    1
    5
    2
    3 1 2 3
    4 4 5 6 7
    
    예상 출력
    1
    6