암호 해독
시간 제한2초메모리 제한512 MB
1부터 n까지의 모든 순열이 연속한 부분열로 나타나도록 길이 2n! 이하의 버튼 누름 순서를 출력한다. n은 최대 9이다.
문제
Алан은 암호와 코드 자물쇠를 여는 것을 좋아한다. 이번에는 그가 유난히 복잡한 자물쇠를 만났는데, 열쇠를 찾지 못해 가능한 모든 조합을 시도해서 열쇠를 알아내기로 했다.
자물쇠는 정수 1부터 까지 번호가 매겨진 개의 버튼으로 이루어져 있다. 자물쇠는 연속한 번의 버튼 누름이 어떤 비밀 순열을 이루면 열린다. 자물쇠의 버튼은 한 번에 하나씩 눌러야 하며, 두 개 이상의 버튼을 동시에 누를 수 없다.
더 형식적으로: Алан이 버튼을 번 눌렀다고 하자. ()를 Алан이 번째로 누른 버튼의 번호, 을 비밀 순열이라고 하자. 그러면 자물쇠는 , , ..., 인 ()가 존재할 때 열린다.
Алан은 어떤 비밀 순열에 대해서도 자물쇠가 열리는 만능 누름 순서를 만들고 싶어 한다. 또한 이 순서의 길이가 을 넘지 않기를 원한다. 여기서 이다. 예를 들어 이면 순서의 길이는 12를 넘지 않아야 한다.
Алан이 그러한 순서를 찾도록 도와라.
입력
입력 파일의 유일한 줄에 정수 ()이 주어진다. 이는 코드 자물쇠의 버튼 개수이다.
출력
출력 파일의 첫 번째 줄에 만능 순서의 길이 ()를 출력한다. 두 번째 줄에 버튼을 누를 순서인 개의 정수 를 공백으로 구분하여 출력한다 (). 길이가 이하인 순서를 아무거나 출력하면 되며, 길이를 최소화할 필요는 없다. 그러한 순서는 모든 에 대해 존재함이 보장된다.