삼각 단위 이동을 정해진 횟수 안에서 더해 목표 좌표에 도달할 수 있는지 판단하고 최소 이동 횟수를 구합니다.
보통4행렬수학아직 제출이 없습니다시간 제한5초메모리 제한256 MB네 여신이 지키는 이(異)세계에서는 오늘도 신도를 모으려는 전쟁이 벌어진다. 최근 전쟁에서 계속 지기만 한 여신 이나는 다음 전쟁만큼은 이기겠다고 다짐하고 다른 여신들의 행동 패턴을 분석했다. 이나는 여신들의 이동을 전부 수치로 옮기는 데 성공했고, 이를 단위 이동이라 부르기로 했다.
단위 이동의 성질은 다음과 같다.
어떤 좌표가 주어졌을 때 단위 이동을 적당한 순서로 조합해 그 좌표에 닿을 수 있으면 이동 가능한 위치, 닿을 수 없으면 불가능한 위치라고 한다. 각 단위 이동은 몇 번이든 사용할 수 있지만 전체 이동 횟수는 20억(2,000,000,000)번을 넘길 수 없다. 즉 각 단위 이동을 사용한 횟수는 음이 아닌 정수이고, 그 합이 20억 이하여야 한다.
도달 가능한 위치라면 가장 적은 수의 단위 이동으로 갔을 때 사용한 단위 이동의 개수를 최단 이동 횟수라고 한다. 주어진 좌표가 원점이면 한 번도 움직이지 않아도 되므로 최단 이동 횟수는 0이다.
예를 들어 여신이 2차원 공간에서 움직인다고 하자. 단위 이동의 집합이 {(1,0),(0,1)}이면 (2,1)은 (1,0)+(1,0)+(0,1)로 표현되므로 이동 가능한 위치이고, 이보다 적은 횟수로는 갈 수 없으므로 최단 이동 횟수는 3이다. 반면 (−1,1)로는 갈 수 없다.
이나를 도와 주어진 좌표에 다른 여신들이 도달할 수 있는지 판정하고, 도달할 수 있다면 최단 이동 횟수를 구하자.
첫 줄에 테스트 케이스의 수 T(1≤T≤100)가 주어진다.
각 테스트 케이스의 첫 줄에는 차원의 수 n(1≤n≤500)이 주어진다. 이어지는 n개의 줄 중 i번째 줄에는 i번 단위 이동을 이루는 n개의 정수 xi1,xi2,…,xin(−1000≤xij≤1000)이 공백을 사이에 두고 주어진다. 단위 이동은 처음 1이 나오는 위치가 커지는 순서로 주어진다. 그다음 줄에는 목표 좌표를 나타내는 n개의 정수 y1,y2,…,yn(−5×108≤yi≤5×108)이 주어진다.
모든 테스트 케이스의 n을 더한 값은 2000을 넘지 않는다.
각 테스트 케이스마다 한 줄씩 출력한다. 다른 여신들이 주어진 좌표에 도달할 수 있으면 1을, 도달할 수 없으면 0을 출력한다. 도달할 수 있으면 같은 줄에 최단 이동 횟수를 공백으로 구분해 이어서 출력한다.
최단 이동 횟수가 20억을 넘는 좌표는 도달할 수 없는 좌표로 보고 0만 출력한다.