전차 차체는 볼록 다면체이다. 그 안에 주요 부품이 여러 개 들어 있고, 각 부품은 좌표축에 평행한 직육면체이다. 부품은 서로 겹치지 않고 차체 안쪽에 완전히 들어가 있으며, 부품끼리도 차체와도 닿지 않는다.
포탄은 시작점, 방향 벡터, 초기 속도로 주어진다. 시작점은 차체 바깥에 있다. 포탄은 직선을 따라 날아가고, 날아가는 동안 속도는 그대로이다.
차체의 각 면과 부품의 각 면에는 저항 r과 도탄 임계값 t가 있다. 한 부품의 여섯 면은 저항도 도탄 임계값도 같다. 포탄이 어떤 면에 닿으면 속도가 그 면의 저항만큼 줄어든다. 줄어든 뒤의 속도가 그 면의 도탄 임계값 이하이면 포탄은 그 면에서 튕겨 나가며, 반사각은 입사각과 같다. 그렇지 않으면 포탄은 그 면을 뚫고 같은 방향으로 계속 날아간다. 포탄은 여러 번 튕길 수 있다.
포탄은 속도가 0 이하로 떨어지는 순간 소멸하고, 뚫거나 튕긴 면의 개수가 D가 되는 순간에도 소멸한다. 두 경우 모두 마지막으로 닿은 면의 위치에서 소멸하고, 그 뒤로는 어떤 면에도 닿지 않는다.
포탄이 부품 내부를 지나간 경우에만 그 부품을 관통한 것으로 센다. 부품의 면에서 튕기기만 한 것은 관통이 아니다.
포탄은 차체나 부품의 어떤 면의 모서리, 꼭짓점과도 거리 10보다 가까워지지 않고, 어떤 면과 평행하게 움직이면서 그 면을 지나가지도 않는다.
포탄이 관통한 부품과 포탄이 소멸한 위치를 구하라.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.
첫째 줄에 두 정수 F와 C가 주어진다 (4≤F≤1000, 0≤C≤100). F는 차체를 이루는 면의 개수, C는 주요 부품의 개수이다.
둘째 줄에 두 정수 D와 S가 주어진다 (1≤D≤100, 1≤S≤1000000). D는 포탄이 뚫거나 튕길 수 있는 면 개수의 한계, S는 포탄의 초기 속도이다.
셋째 줄에 여섯 정수 a, b, c, d, e, f가 주어진다 (−1000000≤a,b,c,d,e,f≤1000000). (a,b,c)는 포탄의 시작점, (d,e,f)는 포탄의 방향 벡터이다.
이어서 차체의 면 F개가 주어진다. 각 면은 세 정수 v, r, t가 있는 줄로 시작한다 (3≤v≤F, 0≤r,t≤1000000). v는 그 면의 꼭짓점 개수, r은 저항, t는 도탄 임계값이다. 다음 v개 줄에는 각각 세 정수 x, y, z가 주어지고 (−1000000≤x,y,z≤1000000), 그 면의 꼭짓점을 경계를 따라 순서대로 나열한 것이다. 한 면에서 연속한 세 꼭짓점이 한 직선 위에 있는 경우는 없다.
면 F개 다음에는 주요 부품마다 한 줄씩 C개 줄이 주어진다. 각 줄에는 여덟 정수 x, y, z, xs, ys, zs, r, t가 주어진다 (−1000000≤x,y,z≤1000000, 1≤xs,ys,zs≤1000000, 0≤r,t≤1000000). (x,y,z)는 직육면체의 중심, xs, ys, zs는 세 축 방향의 변 길이, r은 여섯 면 각각의 저항, t는 여섯 면 각각의 도탄 임계값이다.
한 줄에 있는 정수는 공백 하나로 구분한다.
각 테스트 케이스마다 다음을 출력한다.
먼저 포탄이 관통한 부품의 개수 Cp를 한 줄에 출력한다. 다음 Cp개 줄에는 관통한 부품의 번호를 0부터 시작하는 번호로 한 줄에 하나씩, 증가하는 순서로 출력한다.
그 다음 줄에는 포탄이 소멸한 위치를 세 정수로 공백 하나씩 두고 출력한다. 각 좌표는 소수점 아래를 버린 값이다. 각 좌표는 입력에 그대로 나온 정수이거나, 버림 결과가 흔들릴 만큼 정수에 가깝지 않다. 포탄이 끝내 소멸하지 않으면 이 줄 대신 SHOT NEVER DISINTEGRATED를 출력한다.