K-지폐

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

문제

지수가 사는 나라는 11번부터 NN번 도시까지 총 NN개의 도시와 도로 MM개가 존재한다. ii번 도로는 u_iu\_{i}번 도시에서 v_iv\_{i}번 도시로 갈 수 있는 단방향 도로이며, 이용 시 w_iw\_{i}만큼의 이용료를 지불해야 한다.

지수는 SS번 도시에서 TT번 도시로 여행을 가려고 한다. 지수는 TT번 도시에 도착하는 순간 지금까지 이용한 도로의 이용료를 합하여 지불한다.

지수는 KK원 지폐를 너무 좋아한 나머지, 지갑 안에 무한히 많은 KK원 지폐를 넣고 다닌다. 지수는 지갑 안에 KK원 지폐를 제외한 어떤 단위의 지폐도 가지고 다니고 싶어 하지 않기 때문에 이용료 합을 지불한 뒤 받는 거스름돈이 없도록 여행을 떠나고 싶다. 다시 말해 지수는 이용료 합이 KK의 배수가 되도록 여행하고 싶다.

지수가 거스름돈을 받지 않으면서 TT번 도시까지 여행하는데 지불해야 하는 이용료 합의 최솟값을 구하자.

입력

첫째 줄에 NN, MM, KK가 주어진다. (2N10,000;1Mmin(100,000,N(N1));1K50)(2\leq N\leq 10\\,000; 1\leq M\leq \min\left(100\\,000, N(N-1)\right); 1\leq K\leq 50)

둘째 줄에 SSTT가 공백으로 구분되어 주어진다. (1S,TN;ST)(1\leq S,T\leq N;S\neq T)

셋째 줄부터 MM개의 줄에 걸쳐 u v wu\ v\ w가 공백으로 구분되어 주어진다. uu번 도시에서 vv번 도시로 가는 도로의 이용료가 ww원이라는 뜻이다. (1u,vN;uv;1w1,000)(1 \leq u,v \leq N; u\neq v; 1\leq w \leq 1\\,000)

입력으로 주어지는 모든 값은 정수다.

출력

문제의 조건을 만족하도록 여행할 때, 지수가 지불해야하는 이용료 합의 최솟값을 출력한다.

조건을 만족하면서 여행할 수 없다면 IMPOSSIBLE을 출력한다.