우승자 찾기

NYPC 2020 · 예선

카트라이더 시합에서는 NN 명의 유저가 동시에 시작점에서 출발해서 정해진 트랙을 계속 돌면서 주행한다. 편의상 유저는 번호가 11부터 NN까지 차례대로 매겨져 있다. 에띠는 카트라이더 시합의 사진가가 되어 사진을 찍게 되었다.

유저가 시작점에서 출발해 트랙을 한 바퀴 돌고 시작점을 다시 통과할 때까지 걸린 시간을 랩 타임이라 한다. 만약 어떤 유저가 트랙을 한 바퀴 이상 돌았다면 해당 유저의 제일 짧은 랩 타임을 베스트 랩 타임이라 한다.

트랙을 한 바퀴 이상 돈 유저 중 베스트 랩 타임이 제일 짧은 유저가 카트라이더 시합의 우승자가 된다. 만약 그런 유저가 여러 명이면 모두 우승자가 된다.

에띠는 대회 시작 직후부터 각 유저가 시작점을 지나가는 모든 장면을 사진으로 남겼다. 단, 대회가 시작한 순간 모든 유저가 시작점에서 출발하게 되는데 이는 에띠가 기록하지 않았다. 그 결과 유저들이 시작점을 도합 KK 번 통과하였으며, 둘 이상의 유저가 시작점을 동시에 통과한 경우는 없다는 걸 사진으로 확인하였다. 그런데 유저들이 시작점을 통과한 순서는 확인할 수 있었지만, 카메라의 문제로 시작점을 지나간 정확한 시각을 확인할 수 없었다.

에띠를 도와 우승자가 될 수 있는 모든 유저를 찾는 프로그램을 만들어 보자.

입력 형식

첫 줄에 유저의 수를 나타내는 정수 NN이 주어진다. (1N1000)(1 \le N \le 1\,000)

둘째 줄에 에띠가 찍은 사진의 수를 나타내는 정수 KK가 주어진다. (1K100001 \le K \le 10\,000)

셋째 줄에 에띠가 찍은 사진에 있는 유저의 번호를 시간 순으로 나타내는 KK 개의 정수 x1,x2,,xKx_1, x_2, \dots, x_K가 공백으로 구분되어 주어진다. (1xiN;(1 \le x_i \le N; 1iK)1 \le i \le K)

출력 형식

첫 줄에 우승자가 될 수 있는 유저의 수를 출력한다.

만약 우승자가 될 수 있는 유저가 존재한다면, 둘째 줄에 우승자가 될 수 있는 유저들의 번호를 공백으로 구분하여 오름차순으로 출력한다.

예제

입력

3 10 1 2 1 3 1 2 2 1 3 1

출력

2 1 2

예제 설명

위 예제에서 시간별로 다음과 같은 일이 일어났다고 가정해보자:

이 경우 각 유저의 랩 타임과 베스트 랩 타임은 다음과 같다:

따라서 통과 시간을 위와 같이 가정한 경우 11번 유저가 우승자가 된다.

물론 11번 유저가 우승자가 되는 다른 통과 시간이 있을 수 있으며, 22번 유저가 우승자가 되는 통과 시간도 존재한다. 또한 통과 시간이 모두 정수일 필요도 없다. 단, 33번 유저가 우승자가 되는 통과 시간은 존재하지 않는다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 35

N10;N \le 10; K100K \le 100

종류 2: 65

추가적인 제한 조건이 없음.

해설