순환 반단조 순열
시간 제한2초메모리 제한128 MB
각 n에 대해, 중간 원소가 항상 극소 또는 극대이고 순열을 포인터 사상으로 볼 때 하나의 순환이 되는 1부터 n까지의 순열 중 사전순으로 가장 작은 것을 출력한다.
문제
부터 까지의 정수가 각각 정확히 한 번씩 나타나는 정수 수열을 순열이라고 한다. 이 문제에서는 다음 두 조건을 모두 만족하는 순열 을 다룬다.
- 반단조(antimonotonic): 을 만족하는 모든 위치 에 대해, 는 이웃한 세 값 중에서 가장 작거나 가장 커야 한다.
- 순환(cyclic): 를 위치 에서 위치 로 향하는 포인터로 생각하자. 위치 에서 출발하여 포인터를 따라가면, 위치 로 되돌아오기 전에 개의 위치를 모두 방문할 수 있어야 한다. 즉, 순열이 길이 짜리 하나의 순환만으로 이루어져야 한다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 순열의 길이인 정수 () 하나가 적힌 한 줄로 주어진다. 입력의 끝은 인 줄로 표시하며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다, 반단조이면서 순환인 부터 까지의 순열 중 사전순으로 가장 앞서는(가장 작은) 것을 한 줄에 출력한다. 두 순열 와 를 비교할 때는 수열 과 을 앞에서부터 차례로 비교하여, 처음으로 값이 달라지는 위치에서 더 작은 값을 가지는 쪽을 더 앞선 것으로 본다. 한 줄 안의 정수들은 공백 하나로 구분한다.