크리스마스
시간 제한2초메모리 제한1024 MB
1번 집에서 출발해 원형으로 배치된 모든 집을 방문하고 돌아오되, 한 번에 거리 2 이하로만 이동하고 같은 방향을 세 번 연속 택할 수 없을 때 최소 이동 횟수와 경로를 출력한다.
문제
20XX년의 크리스마스가 다가옴에 따라 산타클로스는 선린 마을에 선물을 나눠주려고 한다. 선린 마을에는 부터 까지의 번호가 매겨진 집이 있다. 집은 번호가 증가하는 순으로 원형을 이루고 있다. 즉, 인 모든 에 대해 번 집과 번 집은 이웃해 있고, 번 집과 번 집 또한 이웃해 있다. 이웃한 집 사이의 거리는 이다. 산타클로스는 번 집부터 시작해서 모든 집에 방문해 선물을 나눠준 뒤, 다시 번 집으로 돌아올 것이다.
산타클로스는 마을 사람들이 잠에서 깨지 않도록 하기 위해 아래 규칙을 따라 이동하려 한다.
- 시계 방향 또는 반시계 방향으로 현재 집에서 거리가 이하인 집에만 갈 수 있다.
- 세 번 연속 같은 방향으로 갈 수 없다.
- 같은 집을 두 번 연속으로 방문할 수 없다.
같은 집을 두 번 연속으로 방문할 수 없지만, 다른 집을 거친 다음에 다시 방문하는 것은 가능하다.
번 집에서 출발하여 가능한 한 적게 이동하며 모든 집을 방문하고 번 집으로 돌아올 때 이동 횟수와 방문 순서를 출력하여라.
입력
첫째 줄에 마을에 있는 집의 수 이 주어진다.
출력
첫 번째 줄에는 가장 적게 이동했을 때 이동 횟수 를 출력한다.
두 번째 줄에는 이동하며 방문한 집의 번호를 나타내는 개의 정수를 공백으로 구분하여 출력한다. 집의 번호는 방문한 순서대로 출력한다.
반드시 번 집에서 출발하여 모든 집을 방문하고 번 집으로 돌아온 뒤 이동을 마쳐야 한다. 즉, 두 번째 줄에 출력하는 첫 정수와 마지막 정수는 항상 이다.
가능한 답이 여러 가지라면 아무거나 출력한다.
힌트
입출력 양이 많으므로 문제지 2-4페이지의 언어 가이드에 있는 빠른 입출력을 사용하는 것을 권장한다.