아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

다음 분할

시간 제한2초메모리 제한1024 MB

요약
오름차순으로 주어진 n의 분할을 사전순으로 바로 다음 분할로 바꾸어 출력하고, 다음 분할이 없으면 No solution을 출력한다.
난이도

보통10점 중 6점

유형
그리디, 수학, 조합론, 구현
정답자
아직 제출이 없습니다

문제

정수 nn의 분할은 합이 nn인 양의 정수들의 집합이다. 순서만 다른 분할은 같은 것으로 취급하므로, 분할의 항이 비감소 순서로 정렬되어 있다고 생각할 수 있다.

예를 들어 정수 5의 분할은 7개가 있다.

\begin{align*} 5&=1+1+1+1+1\\ 5&=1+1+1+2\\ 5&=1+1+3\\ 5&=1+2+2\\ 5&=1+4\\ 5&=2+3\\ 5&=5 \end{align*}

위 예에서 분할들은 사전순으로 정렬되어 있다. 먼저 첫 번째 항으로, 그다음 두 번째 항으로, 이런 식으로 비교한다. 이 문제에서는 주어진 분할에 대해 사전순으로 다음에 오는 분할을 구해야 한다.

입력

입력 파일은 한 줄로 이루어져 있으며, 정수 nn의 분할이 주어진다 (1≤n≤100 0001 \le n \le 100\,000). 분할의 항은 비감소 순서로 주어진다.

출력

입력 파일에 주어진 분할 다음에 오는 사전순 분할을 한 줄로 출력한다. 입력 파일에 정수 nn의 마지막 분할이 주어졌다면 <<No solution>>을 출력한다.

예제2

  1. 예제 1

    입력
    5=1+1+3
    
    예상 출력
    5=1+2+2
    
  2. 예제 2

    입력
    5=5
    
    예상 출력
    No solution