트램

아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

바이트맨(Byteman)은 오래된 탈것의 사진을 모읍니다. 어느 날 창밖을 내다보던 그는 집 앞 정류장에 멈춰 선 보기 드문 옛 트램을 보았지만, 카메라를 드는 사이에 트램이 떠나 버려 사진을 놓치고 말았습니다. 그는 다음 기회는 놓치지 않으려 합니다.

바이트맨이 사는 바이트타운(Bytetown)에는 11번부터 nn번까지 번호가 붙은 nn개의 교차로가 있고, 교차로마다 트램 정류장이 하나씩 있습니다. 트램은 항상 정수 분(정각)에 도착합니다. 매 분 창밖을 확인하는 대신, 바이트맨은 트램이 처음 나타난 순간을 00분으로 삼아 TT분마다 정류장을 촬영하도록 카메라를 맞추기로 했습니다.

그는 트램이 어떤 경로로 다니든 트램이 자신의 정류장으로 다시 돌아오는 모든 순간이 항상 TT의 배수가 되게 하는, 가장 큰 주기 TT를 원합니다. 그러면 카메라는 트램을 결코 놓치지 않습니다.

이를 일반화하여 각 교차로 jj에 대해 값 TjT_j를 다음과 같이 정의합니다. 트램이 00분에 교차로 jj에 나타난 뒤 선로를 따라 이동한다고 합시다. TjT_j는 다음 성질을 만족하는 가장 큰 정수입니다. 트램이 택할 수 있는 모든 경로에 대해, 트램이 이후 다시 교차로 jj에 오는 모든 순간이 TjT_j의 배수이다.

트램은 갈 수 있는 한 계속 움직입니다. 나가는 선로가 없는 교차로(막다른 곳)에 이르렀을 때에만 멈추며, 그렇지 않으면 영원히 달릴 수도 있습니다. 정류장에서 머무는 시간은 무시합니다.

교차로 jj에서 나가는 선로가 하나도 없거나, jj에서 출발한 트램이 결코 jj로 돌아올 수 없다면 Tj=1T_j = -1입니다.

11번부터 nn번까지 모든 교차로 jj에 대해 TjT_j를 구하세요.

입력

첫째 줄에 두 정수 nnmm이 공백 하나로 구분되어 주어집니다 (1n,m100,0001 \le n, m \le 100{,}000). 각각 교차로의 수와 선로의 수입니다. 교차로는 11번부터 nn번까지 번호가 매겨져 있습니다.

이어지는 mm개의 줄에는 각각 세 정수 aia_i, bib_i, cic_i가 공백으로 구분되어 주어집니다 (1ai,bin1 \le a_i, b_i \le n, 1ci10,0001 \le c_i \le 10{,}000). 이는 트램이 교차로 aia_i에서 교차로 bib_icic_i분 만에 이동할 수 있는 일방통행 선로를 뜻합니다.

한 쌍의 교차로 사이에 양방향 선로가 모두 있을 수 있고, ai=bia_i = b_i인 경우(한 교차로에서 자기 자신으로 도는 순환 선로)도 가능합니다. 임의의 한 방향에 대해 두 교차로 사이의 선로는 최대 하나입니다.

정류장에서 머무는 시간은 무시하며, 트램은 갈 수 있는 한(막다른 곳에 이를 때까지, 그렇지 않으면 영원히) 계속 이동합니다.

출력

nn개의 정수를 각각 한 줄에 하나씩 출력합니다. jj번째 줄에는 TjT_j를 출력합니다.

힌트

위 그림의 예에서, 교차로 22번을 떠난 트램은 예컨대 88분, 1010분, 1212분 뒤에 돌아올 수 있습니다. 따라서 카메라가 트램의 등장을 놓치지 않으려면 22분마다 촬영하도록 맞춰야 하므로 T2=2T_2 = 2입니다.