커플 파괴자 민욱이 (Small)
시간 제한1초메모리 제한1024 MB
N명이 한 줄로 선 배열을 연속된 그룹으로 나눈 뒤, 커플이 서로 붙지 않도록 그룹 순서를 바꾸는 최소 그룹 수와 배치를 구합니다.
문제
Small 버전에서는 가능한 방법 중 아무거나 가지만 출력한다.
'커플 파괴자 민욱이'는 솔로이기 때문에 커플끼리 함께 있는 모습을 보기 싫어한다. 그러한 민욱이가 사람들 명이 일렬로 서 있는 대기 줄 하나를 발견했다. 민욱이는 이 대기 줄을 개의 묶음으로 나눈 뒤, 묶음의 순서를 바꾸어 어떠한 커플끼리도 이웃하지 않게 할 것이다. 단, 같은 묶음에 있는 사람들끼리의 순서를 바꾸거나 거꾸로 뒤집을 수는 없다. 각 묶음의 사람 수는 일정하지 않고 서로 달라도 된다.
이 크면 묶음의 순서를 바꾸는 민욱이의 머리가 아프기 때문에, 민욱이는 을 최소로 만들려고 한다. 그리고 이 최소일 때 가능한 방법 중 아무거나 가지만 구하려고 한다.
입력
1번째 줄에 사람들의 수를 나타내는 정수 ()이 주어진다.
2번째 줄에 각 사람의 정보를 나타내는 정수 ()이 공백으로 구분되어 주어진다. 는 대기 줄의 앞에서 번째에 서 있는 사람의 정보이다. 이면 그 사람은 솔로이고, 이고 이면 두 사람은 커플이다. 0이 아닌 수는 에 반드시 두 번씩 존재한다.
출력
1번째 줄에는 의 최솟값을 출력한다.
2번째 줄에는 1번 묶음, 2번 묶음, ..., 번 묶음의 사람 수를 공백으로 구분하여 출력한다.
3번째 줄에는 묶음의 순서를 바꾼 뒤, 대기 줄의 앞에서부터 묶음의 번호를 출력한다.
어떻게 묶음으로 나누고 배열하더라도 항상 한 커플 이상이 이웃한다면, 1번째 줄에 을 출력하고 그다음 줄부터는 아무것도 출력하지 않는다.