패리티 정렬
시간 제한2초메모리 제한512 MB
0부터 n-1까지의 순열을 최대 30번의 연산으로 오름차순 정렬합니다. 각 연산은 선택한 위치의 값을 짝수와 홀수로 나누어 다시 배열합니다.
문제
길이가 인 순열 가 주어진다. 이 문제에서 순열의 원소는 부터 까지의 정수이다.
를 오름차순으로 정렬하려면 아래 연산을 최대 번 수행한다.
연산은 두 개의 매개변수로 정해진다. 연산의 모드를 나타내는 정수 ()와 0과 1로만 이루어진 길이 의 문자열 이다.
처음에 비어 있는 수열 와 가 있다.
다음으로 를 부터 까지 바꾸며 아래 단계를 반복한다.
- 이면 아무것도 하지 않는다.
- 이면 가 짝수일 때 를 의 끝에 추가한다. 홀수이면 의 끝에 추가한다.
이면 수열 는 와 를 이 순서로 이어 붙인 것이다.
이면 수열 는 와 를 이 순서로 이어 붙인 것이다.
다음으로 를 부터 까지 바꾸며 아래 단계를 반복한다.
- 이면 아무것도 하지 않는다.
- 이면 를 의 첫 번째 원소로 바꾸고, 그 원소를 에서 제거한다.
예를 들어 , , , 을 택하면 과정은 아래 그림과 같다.

입력
첫 번째 줄에 정수 ()이 주어진다. 두 번째 줄에는 정수 () 개가 주어진다. 모든 는 서로 다르다.
출력
가능한 정렬 과정 중 하나를 다음 형식으로 출력한다.
첫 줄에 연산 횟수 ()를 출력한다.
다음 개의 줄에는 번째 연산을 나타내는 정수 ()와 길이 인 이진 문자열 를 출력한다.
가능한 답이 여러 개이면 그중 아무거나 출력해도 된다. 연산 횟수를 최소로 만들 필요는 없다.