지수가 사는 나라는 1번부터 N번 도시까지 총 N개의 도시와 도로 M개가 존재한다. i번 도로는 u_i번 도시에서 v_i번 도시로 갈 수 있는 단방향 도로이며, 이용 시 w_i만큼의 이용료를 지불해야 한다.
지수는 S번 도시에서 T번 도시로 여행을 가려고 한다. 지수는 T번 도시에 도착하는 순간 지금까지 이용한 도로의 이용료를 합하여 지불한다.
지수는 K원 지폐를 너무 좋아한 나머지, 지갑 안에 무한히 많은 K원 지폐를 넣고 다닌다. 지수는 지갑 안에 K원 지폐를 제외한 어떤 단위의 지폐도 가지고 다니고 싶어 하지 않기 때문에 이용료 합을 지불한 뒤 받는 거스름돈이 없도록 여행을 떠나고 싶다. 다시 말해 지수는 이용료 합이 K의 배수가 되도록 여행하고 싶다.
지수가 거스름돈을 받지 않으면서 T번 도시까지 여행하는데 지불해야 하는 이용료 합의 최솟값을 구하자.
첫째 줄에 N, M, K가 주어진다. (2≤N≤10,000;1≤M≤min(100,000,N(N−1));1≤K≤50)
둘째 줄에 S와 T가 공백으로 구분되어 주어진다. (1≤S,T≤N;S=T)
셋째 줄부터 M개의 줄에 걸쳐 u v w가 공백으로 구분되어 주어진다. u번 도시에서 v번 도시로 가는 도로의 이용료가 w원이라는 뜻이다. (1≤u,v≤N;u=v;1≤w≤1,000)
입력으로 주어지는 모든 값은 정수다.
문제의 조건을 만족하도록 여행할 때, 지수가 지불해야하는 이용료 합의 최솟값을 출력한다.
조건을 만족하면서 여행할 수 없다면 IMPOSSIBLE을 출력한다.