상승장 (Hossa)

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

nn개의 서로 다른 자연수로 이루어진 수열 a1,a2,,ana_1, a_2, \ldots, a_n을 생각하자. 이 수열이 상승장(hossa)이라는 것은, i<j<ki < j < k를 만족하는 모든 세 위치 i,j,ki, j, k에 대해 다음이 성립한다는 뜻이다: 만약 ai<aja_i < a_j이면 ak>aia_k > a_i이다.

직관적으로 말하면, 어떤 두 시점 iijj 사이에 값이 aia_i에서 aja_j로 올랐다면(ai<aja_i < a_j), 그 이후의 어떤 날에도 값이 다시 aia_i 이하로 떨어지지 않는다는 뜻이다.

예를 들어 원소가 1,2,3,41, 2, 3, 4인 상승장은 모두 14개이며 다음과 같다.

(1,2,3,4), (2,1,3,4), (1,3,2,4), (3,1,2,4), (3,2,1,4), (1,2,4,3), (2,1,4,3), (1,4,2,3), (1,4,3,2), (4,1,2,3), (4,2,1,3), (4,1,3,2), (4,3,1,2), (4,3,2,1)(1,2,3,4),\ (2,1,3,4),\ (1,3,2,4),\ (3,1,2,4),\ (3,2,1,4),\ (1,2,4,3),\ (2,1,4,3),\ (1,4,2,3),\ (1,4,3,2),\ (4,1,2,3),\ (4,2,1,3),\ (4,1,3,2),\ (4,3,1,2),\ (4,3,2,1)

반면 (3,2,4,1)(3,2,4,1)은 상승장이 아니다. 값이 33에서 44로 올랐다가 나중에 11로 떨어지기 때문이다.

모든 상승장은 LmPL\,m\,P 꼴로 나타낼 수 있다. 여기서 mm은 수열의 최댓값이고, LLmm의 왼쪽에 있는 원소들, PPmm의 오른쪽에 있는 원소들이다. 예를 들어 상승장 (1,2,4,3)(1,2,4,3)에서는 m=4m = 4, L=(1,2)L = (1,2), P=(3)P = (3)이다. 이때 LLPP도 각각 더 적은 개수의 원소로 이루어진 상승장이 된다.

같은 수들로 이루어진(서로가 서로의 순열인) 두 상승장 H1=L1mP1H_1 = L_1\,m\,P_1H2=L2mP2H_2 = L_2\,m\,P_2 사이의 순서 H1<H2H_1 < H_2를 다음과 같이 정의한다.

  1. P1P_1의 원소 개수가 P2P_2의 원소 개수보다 적으면 H1<H2H_1 < H_2이다.
  2. 두 개수가 같으면, 상승장 P1P_1이 상승장 P2P_2보다 작은지(P1<P2P_1 < P_2)로 판단한다.
  3. P1P_1P2P_2가 완전히 같은 수열이면, L1<L2L_1 < L_2인지로 판단한다.

이 순서로 원소가 1,2,3,41, 2, 3, 4인 상승장을 정렬하면 위에 나열한 순서가 된다. 비교의 예는 다음과 같다.

  • (1,2,3,4)<(2,1,3,4)(1,2,3,4) < (2,1,3,4): 규칙 3에 의해 (1,2,3)<(2,1,3)(1,2,3) < (2,1,3)인지 보면 되고, 다시 규칙 3에 의해 (1,2)<(2,1)(1,2) < (2,1)인지 보면 되며, 이는 규칙 1로 성립한다.
  • (1,4,2,3)<(1,4,3,2)(1,4,2,3) < (1,4,3,2): 규칙 2에 의해 (2,3)<(3,2)(2,3) < (3,2)이다.

상승장 HH가 주어질 때, HH의 바로 다음 상승장 XX를 구하라. 즉 다음 두 조건을 모두 만족하는 XX이다.

  • H<XH < X
  • H<HH < H'인 모든 상승장 HH'(XX 제외)에 대해 X<HX < H'

입력으로 주어지는 모든 경우에 대해 그러한 XX가 항상 존재한다고 가정해도 된다. 예를 들어 (1,2,3,4)(1,2,3,4)의 바로 다음 상승장은 (2,1,3,4)(2,1,3,4)이고, (2,1,3,4)(2,1,3,4)의 바로 다음은 (1,3,2,4)(1,3,2,4), 그 다음은 (3,1,2,4)(3,1,2,4)이다.

입력

첫째 줄에 정수 nn이 주어진다 (2n1062 \le n \le 10^6). 둘째 줄에는 어떤 상승장 HH를 이루는 nn개의 서로 다른 자연수가 공백으로 구분되어 주어진다. 각 값은 10610^6 이하이다.

출력

상승장 HH의 바로 다음 상승장을 이루는 nn개의 자연수를 공백으로 구분하여 한 줄에 출력한다.