알리바바
시간 제한1초메모리 제한128 MB
세 종류의 토큰 보유량과 교환 규칙이 주어질 때, 각 종류별 필요량을 모두 충족하는 최소 교환 횟수를 구하고 불가능하면 NIE를 출력한다.
문제
참깨 동굴을 열려면 알리바바는 금화 토큰 개, 은화 토큰 개, 동화 토큰 개 이상을 가지고 있어야 한다. 처음에 알리바바는 각 종류의 토큰을 일정 개수씩 가지고 있으며, 정해진 규칙에 따라 동굴의 수호자와 토큰을 교환할 수 있다. 각 규칙은 다음과 같은 형태이다.
이는 알리바바가 금화 개, 은화 개, 동화 개를 내주고 그 대가로 금화 개, 은화 개, 동화 개를 받을 수 있다는 뜻이다. 한 번의 교환에서 얻은 토큰은 다음 교환에서 다시 사용할 수 있다.
각 테스트 케이스마다, 유한한 횟수의 교환을 거쳐 알리바바가 각 종류별로 필요한 개수 이상의 토큰을 모두 가질 수 있는지 판단하여라. 가능하다면 그러한 교환 순서의 최소 횟수를 출력하고, 불가능하다면 NIE(폴란드어로 "아니오")를 출력한다.
입력
첫째 줄에는 테스트 케이스의 수를 나타내는 양의 정수 ()가 주어진다. 이어서 테스트 케이스들이 주어지며, 각 테스트 케이스는 여러 줄로 이루어진다.
각 테스트 케이스는 다음과 같다.
- 첫째 줄: 알리바바가 처음에 가진 금화, 은화, 동화 토큰의 개수를 나타내는 세 음이 아닌 정수
- 둘째 줄: 동굴을 여는 데 필요한 금화, 은화, 동화 토큰의 개수를 나타내는 세 정수
- 셋째 줄: 규칙의 개수 ()
- 다음 개의 줄: 각 줄마다 규칙 를 나타내는 여섯 정수
한 줄 안의 수들은 공백 하나로 구분된다.
출력
각 테스트 케이스마다 한 줄을 출력한다. 알리바바가 필요한 만큼의 토큰을 갖추기 위해 최소로 수행해야 하는 교환 횟수(음이 아닌 정수)를 출력하거나, 그러한 교환 순서가 존재하지 않으면 NIE를 출력한다.