n개의 서로 다른 자연수로 이루어진 수열 a1,a2,…,an을 생각하자. 이 수열이 상승장(hossa)이라는 것은, i<j<k를 만족하는 모든 세 위치 i,j,k에 대해 다음이 성립한다는 뜻이다: 만약 ai<aj이면 ak>ai이다.
직관적으로 말하면, 어떤 두 시점 i와 j 사이에 값이 ai에서 aj로 올랐다면(ai<aj), 그 이후의 어떤 날에도 값이 다시 ai 이하로 떨어지지 않는다는 뜻이다.
예를 들어 원소가 1,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)
반면 (3,2,4,1)은 상승장이 아니다. 값이 3에서 4로 올랐다가 나중에 1로 떨어지기 때문이다.
모든 상승장은 LmP 꼴로 나타낼 수 있다. 여기서 m은 수열의 최댓값이고, L은 m의 왼쪽에 있는 원소들, P는 m의 오른쪽에 있는 원소들이다. 예를 들어 상승장 (1,2,4,3)에서는 m=4, L=(1,2), P=(3)이다. 이때 L과 P도 각각 더 적은 개수의 원소로 이루어진 상승장이 된다.
같은 수들로 이루어진(서로가 서로의 순열인) 두 상승장 H1=L1mP1과 H2=L2mP2 사이의 순서 H1<H2를 다음과 같이 정의한다.
- P1의 원소 개수가 P2의 원소 개수보다 적으면 H1<H2이다.
- 두 개수가 같으면, 상승장 P1이 상승장 P2보다 작은지(P1<P2)로 판단한다.
- P1과 P2가 완전히 같은 수열이면, L1<L2인지로 판단한다.
이 순서로 원소가 1,2,3,4인 상승장을 정렬하면 위에 나열한 순서가 된다. 비교의 예는 다음과 같다.
- (1,2,3,4)<(2,1,3,4): 규칙 3에 의해 (1,2,3)<(2,1,3)인지 보면 되고, 다시 규칙 3에 의해 (1,2)<(2,1)인지 보면 되며, 이는 규칙 1로 성립한다.
- (1,4,2,3)<(1,4,3,2): 규칙 2에 의해 (2,3)<(3,2)이다.
상승장 H가 주어질 때, H의 바로 다음 상승장 X를 구하라. 즉 다음 두 조건을 모두 만족하는 X이다.
- H<X
- H<H′인 모든 상승장 H′(X 제외)에 대해 X<H′
입력으로 주어지는 모든 경우에 대해 그러한 X가 항상 존재한다고 가정해도 된다. 예를 들어 (1,2,3,4)의 바로 다음 상승장은 (2,1,3,4)이고, (2,1,3,4)의 바로 다음은 (1,3,2,4), 그 다음은 (3,1,2,4)이다.