학회

N명 중 처음 K명이 과학자인 상황에서 M일 동안 두 사람씩 만난다. 각 발명이 언론인에게 전달되도록 만들 수 있는 가장 늦은 날을 구하고, 발명을 알게 되는 언론인과 각 발명을 처음 들은 언론인을 보고한다.

어려움9그래프유니온 파인드동적 계획법구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

니코시아에서 큰 학술 대회가 열린다. 참가자는 NN명이고 그중 KK명이 과학자다. 과학자는 1번부터 KK번까지이고, 나머지 NKN-K명은 기자다. 과학자는 각자 발명을 정확히 하나씩 만들며, 서로 같은 발명은 없다. ii번 과학자가 만드는 발명을 발명 ii라고 하자.

대회는 MM일 동안 이어지고 날에는 1일째부터 MM일째까지 번호가 붙는다. 참가자는 모두 매일 대회에 나온다. 하루에 두 사람 사이의 만남이 정확히 한 번 일어나고, 만난 두 사람은 자기가 이미 들었거나 직접 만든 발명을 전부 서로 알려 준다. 만남 전에 AA가 아는 발명의 집합이 UU, BB가 아는 집합이 VV였다면 만남 뒤에는 둘 다 UVU \cup V의 발명을 안다.

과학자는 자기 발명이 세상에 알려지기를 바라므로 대회가 끝날 때까지 기자 중 적어도 한 명이 그 발명을 알게 되기를 원한다. 발명은 그날 아침, 그날의 만남이 시작되기 전에 만든다. 그래서 발명을 만든 날에 누군가와 만나면 새 발명까지 함께 알려 준다.

과학자는 모두 아주 게을러서, 기자 중 적어도 한 명이 발명을 알게 되는 조건을 지키는 한 가능한 가장 늦은 날에 발명을 만든다.

다음 세 가지를 구하는 프로그램을 작성하시오.

  1. 과학자마다 발명을 만들 수 있는 가장 늦은 날
  2. 대회 기간에 발명을 하나 이상 알게 되는 기자
  3. 과학자마다 그 발명을 가장 먼저 알게 되는 기자

2번과 3번은 모든 과학자가 1번에서 구한 가장 늦은 날에 발명을 만든다고 보고 답한다.

입력

첫째 줄에 정수 NN, MM, KK가 공백으로 구분되어 주어진다. (1KN1061 \le K \le N \le 10^6, 1M1061 \le M \le 10^6)

다음 MM개 줄에는 그날 만나는 두 사람의 번호 ii, jj가 주어진다. (1i,jN1 \le i, j \le N, iji \ne j) 만남은 일어나는 순서대로 주어지므로 dd번째 줄에 적힌 만남이 dd일째에 일어난다.

출력

첫째 줄에 KK개의 정수를 공백으로 구분해 출력한다. ii번째 정수는 ii번 과학자가 발명을 만드는 날이다. 어느 날에 만들어도 기자가 그 발명을 알 수 없다면 그 자리에는 -1을 출력한다.

둘째 줄에는 발명을 하나 이상 알게 되는 기자의 수 xx를 먼저 출력하고, 이어서 그 기자의 번호를 커지는 순서로 xx개 출력한다. xxNKN-K 이하다. xx가 0이면 둘째 줄에는 0만 출력한다.

셋째 줄에 KK개의 정수를 공백으로 구분해 출력한다. ii번째 정수는 ii번 과학자의 발명을 가장 먼저 알게 되는 기자의 번호다. 그 발명을 아는 기자가 없다면 -1을 출력한다.

참고

첫 번째 예제에서 1번 과학자가 발명을 만들 수 있는 가장 늦은 날은 3일째다. 4일째에 만들면 과학자인 3번만 발명을 알게 되고 그 밖에는 아무도 알지 못한다. 3일째에 만들면 같은 날 2번이 발명을 알고, 5일째에 2번에게서 기자인 4번이 알게 된다.