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

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

고고학 연구

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

요약
알파벳 크기를 모르는 상태에서 각 위치 이후 기호의 다음 등장 위치를 담은 표의 남은 값을 뒤섞인 채로 입력받아, 표를 만족하는 사전순 최소 원래 수열을 복원하거나 불가능함을 판정한다.
난이도

어려움10점 중 9점

유형
그리디, 그래프, 구현, 정렬
정답자
아직 제출이 없습니다

문제

Tupids 교수가 최근 조사에서 고고학 문서를 새로 발굴했다.

이 문서는 cc가지 기호를 nn개 늘어놓아 적은 글이다. 교수는 뜻을 연구하려고 각 기호에 11부터 cc까지의 자연수를 하나씩 붙였다. 그래서 이 문서는 11 이상 cc 이하의 자연수 nn개로 이루어진 수열로 적을 수 있다.

교수는 기호 사이의 관계를 살피려고 행이 nn개, 열이 cc개인 큰 표를 만들었다. 표의 ii행 jj열에 적은 값은 수열에서 ii번째보다 뒤에 처음으로 나오는 기호 jj의 위치이다. 그런 위치가 없으면 그 칸에는 00을 적는다.

예를 들어 n=6n = 6, c=3c = 3이고 수열이 [1,3,2,2,1,3][1, 3, 2, 2, 1, 3]이면 표의 값 몇 개는 다음과 같다.

  • 33행 22열의 값은 44이다. 33번째보다 뒤에서 기호 22가 처음 나오는 자리가 44번째이기 때문이다.
  • 22행 33열의 값은 66이다. 22번째보다 뒤에서 기호 33이 처음 나오는 자리가 66번째이기 때문이다.
  • 55행 11열의 값은 00이다. 55번째보다 뒤에는 기호 11이 나오지 않기 때문이다.

어느 날 연구실에 불이 나서 문서가 모두 타 버렸다. 표는 완전히 없어지지는 않았지만 피해를 입었다. cc가 얼마였는지 적어 둔 기록이 사라졌고, 표의 일부 칸은 글씨를 알아볼 수 없게 되었으며, 조교가 잘못 보관한 탓에 각 행에 적힌 숫자의 순서까지 뒤섞였다.

교수는 남은 정보로 원래 문서를 복구하려 한다. 조건에 맞는 수열이 무한히 많을 수 있으므로 교수는 사전순으로 가장 앞서는 수열을 원한다. 다만 표의 내용이 잘못되었다면 조건에 맞는 수열이 아예 없을 수도 있다. 그때는 그 슬픈 소식을 교수에게 알려 주면 된다.

피해를 입은 표를 입력으로 받아 원래 수열을 복구하는 프로그램을 작성하라.

입력

첫째 줄에 원래 수열의 길이 nn (1≤n≤3000001 \le n \le 300000)이 주어진다.

다음 nn개의 줄 가운데 ii번째 줄에는 정수 cic_i (0≤ci≤n−i0 \le c_i \le n - i)와 자연수 cic_i개가 주어진다. 이 cic_i개의 수는 표의 ii행에서 아직 읽을 수 있는 숫자이고, 모두 nn 이하이며 서로 다르다. 적힌 순서는 원래 표의 순서와 다를 수 있다.

모든 cic_i의 합은 300000300000을 넘지 않는다.

출력

조건을 만족하는 수열이 있으면 그 수열의 원소 nn개를 공백으로 구분해 한 줄에 출력한다. 조건을 만족하는 수열이 여러 개이면 사전순으로 가장 앞서는 것을 출력한다.

조건을 만족하는 수열이 없으면 "No Solution"을 출력한다.

예제2

  1. 예제 1

    입력
    4
    3 2 3 4
    2 4 3
    1 4
    0
    
    예상 출력
    1 1 2 3
    
  2. 예제 2

    입력
    5
    1 2
    1 4
    1 4
    1 5
    0
    
    예상 출력
    1 1 1 2 1