숫자 게임
시간 제한2초메모리 제한1024 MB
서로 다른 정수 n개가 주어질 때, 탁자 위 칩들이 공차 2 이상의 등차수열에 모두 속하도록 번갈아 칩을 놓는 게임에서 페티야가 이기는 첫 수를 모두 구합니다.
문제
공차가 인 등차수열은 수열 에서 이웃한 두 수의 차가 모두 인 수열이다. 예를 들어 2, 5, 8, 11은 공차가 3인 등차수열이다. 페탸와 바샤는 칩 개가 든 바구니로 게임을 한다. 각 칩에는 서로 다른 정수가 적혀 있으며, 그 수는 이다. 두 사람은 번갈아 두고, 페탸가 먼저 둔다. 한 차례에 플레이어는 바구니에서 칩 하나를 골라 탁자에 올린다. 그다음 탁자에 놓인 모든 칩의 수가 공차 인 어떤 등차수열의 항이 되도록 정수 를 불러야 한다. 항들이 연속일 필요는 없다. 예를 들어 탁자에 2, 8, 11이 있으면 을 부를 수 있다. 둘 수 없는 플레이어가 진다. 바구니가 비었거나, 바구니에 남은 어떤 칩을 올려도 맞는 가 없으면 둘 수 없다. 예를 들어 바구니에 2, 3, 5, 7이 있으면 페탸는 첫 수로 3을 놓아 이길 수 있다. 프로그램은 과 이 주어졌을 때, 바샤가 어떻게 두든 페탸가 이길 수 있는지 판단하고, 페탸를 이기게 하는 모든 첫 수를 구해야 한다.
입력
첫 줄에 정수 ()이 주어진다. 둘째 줄에는 서로 다른 정수 ()이 주어진다. 이웃한 수는 공백 하나로 구분된다.
출력
첫 줄에는 페탸가 이길 수 있는 첫 수의 개수 를 출력한다. 바샤가 페탸의 행동과 관계없이 이길 수 있으면 0만 출력한다. 그렇지 않으면 둘째 줄에 이기는 수 개를 공백 하나로 구분해 출력한다.
힌트
바구니에 2와 4만 있으면, 페탸가 어느 칩을 놓든 바샤가 나머지 칩을 놓는다. 그러면 페탸는 둘 칩이 없어 진다. 앞서 든 첫 번째 경우는 본문에서 자세히 설명했다.