마계안암

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

문제

태윤이는 연세대학교 과잠을 입고 안암 곳곳을 여행하려고 한다.

안암은 NN개의 건물과 서로 다른 건물들을 잇는 MM개의 길로 나타낼 수 있다. 안암역은 11번 건물이고, 태윤이는 현재 안암역에 있다. 모든 길은 일방통행이고, 0명 이상의 고려대학교 학생들이 존재한다.

태윤이가 어떤 길을 지나가기 위해서는 그 길에 존재하는 고려대학교 학생들의 수만큼 연세빵을 바치고 이동해야 한다. 태윤이는 최소한의 빵을 빼앗기고 안암을 여행하고 싶기 때문에, 안암역에서 시작해서 각각의 건물로 최소한의 빵을 빼앗기고 도달하는 서로 다른 경로의 수를 구하려고 한다. 경로란 안암역에서 출발해 건물에 도착할 때까지 지나간 길들을 순서대로 나열한 것이다. 이때 같은 길을 여러 번 지나갈 수 있다.

안암역에서 시작해서 각 건물까지 최소한으로 빵을 빼앗기고 도착하는 서로 다른 경로의 수를 구해보자. 안암역에서 모든 건물로 도착할 수 있음이 보장된다.

입력

건물의 개수 NN이 주어진다. 이어 길의 개수 MM이 주어진다.

이어 MM줄에 걸쳐 ii번째 길의 정보가 u_iu\_i v_iv\_i w_iw\_i의 형식으로 주어진다. ii번째 길을 통해 u_iu\_i번 건물에서 v_iv\_i번 건물로 이동할 수 있고, 길에는 w_iw\_i명의 고려대학교 학생이 존재한다는 뜻이다.

출력

NN줄에 걸쳐 각 건물에 최소한으로 빵을 빼앗기고 도착하는 서로 다른 경로의 수를 출력한다. 만약 그러한 경로가 무수히 많다면 -1을 출력한다.

경로가 무수히 많지 않은 경우에, 경로의 수가 매우 클 수 있으므로 998,244,353998\\,244\\,353로 나눈 나머지를 출력한다.

제한

  • 1N100,0001 \leq N \leq 100\\,000
  • 0M200,0000 \leq M \leq 200\\,000
  • 0w_i1090\leq w\_i \leq10^9 (1iM)(1 \leq i \leq M)
  • u_iv_iu\_i\neq v\_i (1iM)(1 \leq i \leq M)