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