만드는 중입니다

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

토러스 게임 조작하기

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

요약
두 플레이어가 N개의 토러스에 간선을 번갈아 추가합니다. 일부 토러스의 구멍을 메워 구로 바꿔 첫 번째 플레이어가 지도록 만들 수 있는지 판단하고, 가능하면 바꿀 토러스의 번호를 출력합니다.
난이도

어려움10점 중 9점

유형
게임 이론, 수학
정답자
아직 제출이 없습니다

문제

토러스는 아래 그림과 같이 구멍이 하나 있는 도넛 모양의 도형이다.

두 플레이어가 NN개의 토러스 위에서 그래프 게임을 한다. 처음에 토러스 ii의 표면에는 AiA_i개의 정점이 있고, 정점 사이에는 간선이 없다. 플레이어는 번갈아 가며 다음 작업 중 하나를 수행한다.

  • 게임에 있는 토러스 중 하나를 골라 그 위의 정점을 원하는 대로 움직인다. 정점은 토러스의 표면을 따라서만 움직일 수 있다. 정점을 움직일 때는 연결된 간선도 함께 움직여서 연결이 끊어지지 않도록 해야 한다. 서로 다른 두 정점이 같은 위치에 있을 수는 없다.
  • 간선을 한 개 이상 추가한다. 간선은 토러스의 표면 위에 있어야 하며, 양 끝 정점 사이의 연속된 경로이기만 하면 어떤 모양이든 가능하다. 중복 간선과 루프는 만들 수 없다.
  • 선택한 토러스의 간선 중 원하는 것을 새로 그린다. 이때 정점 사이의 연결 관계가 바뀌어서는 안 된다.

작업을 마친 뒤, 작업을 수행한 토러스 위에 다음 중 하나가 있으면 그 작업을 수행한 플레이어가 즉시 패배한다.

  • 서로 교차하는 간선이 있다.
  • 정점이 간선 위에 있다.

다만 작업을 수행하는 도중에는 이 조건에 걸려도 패배하지 않는다.

당신은 후공이다. 게임에서 이기기 위해 시작 전에 토러스를 미리 조작한다. 조작이란 00개 이상 NN개 이하의 토러스를 골라 구멍을 메워 구(sphere)로 만드는 것이다. 게임 중에 조작된 구를 선택할 수 있다. 처음에 구는 조작 전 토러스와 같은 개수의 정점을 가진다.

두 플레이어가 모두 최선의 전략을 쓸 때, 선공이 패배하도록 토러스를 조작할 수 있는지 판별하라. 가능하다면 그 방법을 출력하라. 방법이 여러 가지라면 아무거나 출력해도 정답으로 인정된다.

입력

첫 번째 줄에 토러스의 개수 NN(1≤N≤1061\le N\le 10^6)이 주어진다. 두 번째 줄에는 각 토러스 위의 정점 개수를 나타내는 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N(2≤Ai≤10182\le A_i\le 10^{18})이 공백으로 구분되어 주어진다.

출력

선공이 패배하도록 토러스를 조작할 수 있으면 Y를, 없으면 N을 출력한다.

Y를 출력한 경우, 다음 줄에 조작한 토러스의 개수를 출력한다. 그 개수가 1 이상이면, 그다음 줄에 조작한 토러스의 번호를 공백으로 구분하여 출력한다. 각 번호는 한 번씩만 나와야 하며, 출력 순서는 상관없다.

힌트

토러스나 구의 크기가 게임의 승패에 영향을 주지 않음을 증명할 수 있다.

예제4

  1. 예제 1

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

    입력
    2
    2 2
    
    예상 출력
    Y
    0
    
  3. 예제 3

    입력
    2
    2 3
    
    예상 출력
    N
    
  4. 예제 4

    입력
    5
    5 7 8 9 9
    
    예상 출력
    Y
    3
    1 3 4