Byteland-Electronics가 만드는 마이크로칩은 위에 트랜지스터가 올라간 반도체 판이다. 일부 트랜지스터 쌍의 끝은 마이크로 배선으로 연결되어 있다. 각 마이크로 배선은 한 방향으로만 전기를 흘려보내며, 임피던스(저항을 일반화한 값)를 하나씩 가진다. 마이크로칩의 품질은 그 안에서 임피던스의 곱이 정확히 I가 되는 서로 다른 경로의 개수로 정의한다.
여기서 경로란 한 트랜지스터에서 다른 트랜지스터(도착지가 출발지와 같아도 된다)까지, 마이크로 배선을 전기가 흐르는 방향으로만 따라가며 이동하는 모든 방법을 뜻한다. 경로는 마이크로 배선을 적어도 하나 사용하며, 같은 트랜지스터나 배선을 여러 번 지나가도 된다. 경로의 임피던스는 그 경로에 포함된 모든 마이크로 배선의 임피던스를 곱한 값이다.
마이크로칩의 정보와 두 수 I, k를 읽어, 임피던스가 정확히 I인 경로의 개수를 k로 나눈 나머지를 출력하는 프로그램을 작성하라.
첫째 줄에 네 정수 n, m, I, k가 공백으로 구분되어 주어진다 (2≤n≤50, 1≤m≤n(n−1), 1≤I≤2⋅109, 2≤k≤109). n은 트랜지스터의 수, m은 마이크로 배선의 수, I는 찾고자 하는 경로의 임피던스, k는 나눗셈에 사용할 수이다. 이어지는 m개의 줄에는 각각 세 정수 aj, bj, ij가 주어진다 (1≤aj,bj≤n, aj=bj, 1≤ij≤2⋅109). 이는 트랜지스터 aj에서 bj로 전기를 흘려보내는 임피던스 ij짜리 마이크로 배선을 뜻한다. 어떤 순서쌍 (aj,bj)도 두 번 이상 나타나지 않는다.
한 줄을 출력한다. 임피던스가 I인 경로의 개수가 무한하면 NIESKONCZONOSC(폴란드어로 무한대)를 출력하고, 그렇지 않으면 그 개수를 k로 나눈 나머지를 출력한다.