브루의 창고에는 1 이상 109 이하의 맛을 가진 오렌지가 각각 109개씩 쌓여있다. 브루는 친구들과 같이 오렌지를 나눠 먹으려 한다.
브루는 친구를 총 N명 초대할 예정이다. N의 값은 아직 정해지지 않았다. N명의 친구들은 일렬로 서서 브루가 주는 오렌지를 한 개씩 받아간다. 브루는 아래와 같은 조건을 만족하도록 오렌지를 주고 싶다.
먼저 온 친구부터 차례로 1번, 2번, ⋯, N번 친구라고 하자. 또한, i번 친구가 받은 오렌지의 맛을 A_i라고 하자. 이때,
또한, 만약 위 조건을 만족하도록 오렌지를 나눠 주는 방법이 여러 가지인 경우 브루는 (오렌지를 최대한 아끼기 위해) 그 중 N이 가장 작은 방법을 고르려 한다. 브루의 조건을 만족하도록 친구들을 초대해 오렌지를 나눠주는 프로그램을 만들어 보자.
첫 줄에 두 정수 X, Y가 띄어쓰기로 구분되어 주어진다.
첫 줄에는 초대할 친구의 수 N을 출력한다.
둘째 줄에는 N명의 친구에게 나눠줄 오렌지의 맛 A_1,A_2,⋯,A_N을 띄어쓰기로 구분하여 출력한다.
만약 가능한 방법이 여러 가지인 경우 N이 최소인 방법을 출력하고, 이마저도 여러 가지일 경우 N이 최소인 방법 중 아무거나 출력한다.
위 조건을 만족하는 N≤106인 방법이 항상 존재함이 보장된다.