MVP 투표

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

NN명의 병사들을 두 팀으로 나누어 진행된 부대 축구 대회가 끝난 뒤, 최고의 플레이어를 뽑기 위한 MVP 투표를 진행하려고 한다.

그러나 아무런 조건 없이 투표하게 되면 모두가 본인의 팀에게 투표할 것이 뻔하므로, 모든 병사들은 상대 팀의 병사에게만 투표할 것을 약속했다. 이에 11번 병사부터 NN번 병사까지, 경기에 참여한 모든 NN명의 병사들은 상대 팀 병사를 한 명씩 지목하여 투표했다.

하지만 투표가 끝난 뒤 이 약속을 어긴 거짓말쟁이가 한 명 있었다는 제보가 들어왔다. 그러나 각 병사들이 어떤 팀인지에 대한 정보가 분실되어, 거짓말쟁이를 찾을 증거는 각 병사가 누구를 투표했는지 정리된 자료와, 두 팀 중 적어도 하나의 팀의 인원수가 최소 MM명 이상이었다는 증언뿐이다.

주어진 증거들을 토대로 거짓말쟁이 용의자들을 모두 추려내 보자.

입력

첫 번째 줄에 투표에 참여한 병사의 수 NN과, 두 팀 중 적어도 하나의 팀의 최소 인원수 MM이 공백으로 구분되어 주어진다. (3N200,000;(3\leq N\leq 200\\,000; 1M\<N)1\leq M\<N)

두 번째 줄에 ii번 병사가 MVP로 투표한 병사의 번호를 나타내는 정수 v_iv\_i가 공백으로 구분되어 주어진다. (1v_iN;(1\leq v\_i\leq N; v_ii)v\_i\neq i)

출력

첫 번째 줄에 거짓말쟁이가 될 수 있는 용의자의 수를 출력한다.

두 번째 줄에 용의자들의 번호를 공백으로 구분하여 오름차순으로 출력한다.

만약 어떤 병사가 거짓말쟁이어도 입력으로 주어진 상황이 만들어질 수 없다면, 첫 번째 줄에 1-1을 출력한다.