x가 0과 1로 이루어진 수열이라고 하자. 수열 x에서 외톨이 1(UFO)이란, 수열에 등장하는 1 가운데 양 끝(가장 앞 또는 가장 뒤)에 있으면서 다른 어떤 1과도 인접하지 않는 1을 말한다. 예를 들어 수열 10001010에는 UFO가 두 개, 수열 1101011000에는 UFO가 없으며, 수열 1000에는 UFO가 정확히 한 개 있다.
1부터 n까지의 모든 수를 이진법으로 나타냈을 때 등장하는 UFO의 총 개수를 sks(n)이라고 하자. 예를 들어 sks(5)=5, sks(64)=59, sks(128)=122, sks(256)=249이다.
매우 큰 수를 다루므로 수를 간결하게 표현한다. 양의 정수 x의 이진 표현 (x)2는 항상 1로 시작한다. 이때 x의 간결 표현 REP(x)는 같은 숫자가 연속으로 이어지는 각 구간의 길이를 순서대로 나열한 양의 정수 수열이다. 예를 들면 다음과 같다.
REP(460288)=REP(11100000110000000002)=(3,5,2,9)
REP(408)=REP(1100110002)=(2,2,2,3)
REP(n)이 주어질 때 REP(sks(n))을 구하는 프로그램을 작성하라.
첫째 줄에 양의 정수 n의 간결 표현의 길이를 나타내는 정수 k (1≤k≤106)가 주어진다. 둘째 줄에는 k개의 정수 x1,x2,…,xk (0<xi≤109)가 공백 하나로 구분되어 주어지며, 이 수열이 n의 간결 표현이다. x1+x2+⋯+xk≤109, 즉 0<n<2109임이 보장된다.
두 줄을 출력한다. 첫째 줄에는 하나의 양의 정수 l을 출력한다. 둘째 줄에는 l개의 양의 정수 y1,y2,…,yl을 공백 하나로 구분하여 출력하며, 이 수열은 sks(n)의 간결 표현을 이룬다.