시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
공장 창고에 빈 통들이 한 줄로 나란히 놓여 있다. 창고 관리자는 일부 통을 다른 통 안에 포개어 넣어, 줄의 왼쪽 끝에 빈 공간을 만들고자 한다.
로봇은 오직 한 가지 동작으로만 통을 옮긴다. 통 하나를 집어 오른쪽으로 옮긴 뒤, 자기보다 크기가 엄격히 큰 통 안에 넣는다. 안전 규정상 한 통은 다른 통을 최대 하나만 담을 수 있으며, 담기는 안쪽 통은 비어 있어야 한다.
관리자는 이렇게 만들어진 이중 통이 모두 줄의 왼쪽 끝에 모이기를 원한다. 즉, 왼쪽에서부터 K개의 통과 그 바로 오른쪽에 이어지는 K개의 통을 생각하자. 왼쪽 K개의 통 각각을, 그 다음 K개의 통 중 서로 다른(각각 자기보다 엄격히 큰) 통 안에 어떤 순서로든 넣을 수 있는 가장 큰 K를 구하여라. K=0은 항상 가능하며, 2K는 N을 넘을 수 없다.
첫째 줄에 두 정수 M과 N이 주어진다 (1≤M≤1000, 1≤N≤20000). 각각 가장 큰 통의 크기와 통의 개수이다.
둘째 줄에 통의 크기 A1,A2,…,AN이 왼쪽에서 오른쪽 순서로 주어진다 (1≤Ai≤M).
왼쪽 K개의 통을 각각 그 다음 K개의 통 중 서로 다른, 자기보다 엄격히 큰 통 안에 넣을 수 있는 가장 큰 K를 한 줄에 출력한다.