만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

거의 보보 수

시간 제한3초메모리 제한512 MB

요약
최대 500만 자리의 정수 n이 주어질 때, n보다 작은 almost bobo number 중 가장 큰 수를 구합니다. 그런 수가 없으면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
문자열, 그리디, 문자열 매칭
정답자
아직 제출이 없습니다

문제

양의 정수의 십진수 표현이 같은 정수 두 개를 이어 붙인 것이면 보보 수라고 한다. 예를 들어 1234123412341234와 32323232는 보보 수이고, 12343211234321과 13221322는 그렇지 않다.

양의 정수에서 연속된 같은 숫자를 모두 하나로 합쳤을 때 나오는 수가 보보 수이면, 그 정수를 거의 보보 수라고 한다. 예를 들어 111⏟222⏟3⏟11⏟22⏟33⏟\underbrace{111}\underbrace{222}\underbrace{3}\underbrace{11}\underbrace{22}\underbrace{33}은 연속된 같은 숫자를 합치면 123123123123이 되므로 거의 보보 수이다.

보보에게 매우 큰 수 nn이 있다. 보보는 nn보다 작은 거의 보보 수 중 가장 큰 수를 알고 싶어 한다.

입력

입력은 0개 이상의 테스트 케이스로 이루어지며, 파일 끝(EOF)에서 끝난다. 각 테스트 케이스는 다음과 같다.

첫 줄에 앞자리가 0이 아닌 정수 nn이 주어진다 (1≤n≤105 000 0001 \leq n \leq 10^{5\,000\,000}).

입력에 주어진 모든 nn의 십진수 표현 길이의 합은 5 000 0005\,000\,000을 넘지 않는다.

출력

각 테스트 케이스마다 nn보다 작은 거의 보보 수 중 가장 큰 수를 앞자리가 0이 아닌 정수로 출력한다. 그런 수가 없으면 −1-1을 출력한다.

예제1

  1. 예제 1

    입력
    12345
    67890
    11111
    1000
    26782641
    
    예상 출력
    12212
    67767
    11010
    -1
    26777267