종이접기 공리 6: 접는 선의 개수 세기

시간 제한1초메모리 제한512 MB

문제

종이접기에 대한 최초의 형식적 공리 목록은 후지타 후미아키(Humiaki Huzita)와 베네데토 시메미(Benedetto Scimemi)가 발표했으며, 후지타 공리로 알려져 있다. 각 공리는 점과 선을 맞추어 하나의 접는 선을 만들어 내는 방법을 설명한다. 여섯 개의 공리는 다음과 같다.

  1. 두 점 $p_1$, $p_2$에 대해, 두 점을 모두 지나는 접는 선이 유일하게 존재한다.
  2. 두 점 $p_1$, $p_2$에 대해, $p_1$을 $p_2$ 위로 겹치게 하는 접는 선이 유일하게 존재한다.
  3. 두 직선 $l_1$, $l_2$에 대해, $l_1$을 $l_2$ 위로 겹치게 하는 접는 선이 존재한다.
  4. 점 $p_1$과 직선 $l_1$에 대해, $l_1$에 수직이면서 $p_1$을 지나는 접는 선이 유일하게 존재한다.
  5. 두 점 $p_1$, $p_2$와 직선 $l_1$에 대해, $p_1$을 $l_1$ 위로 겹치게 하면서 $p_2$를 지나는 접는 선이 존재한다.
  6. 두 점 $p_1$, $p_2$와 두 직선 $l_1$, $l_2$에 대해, $p_1$을 $l_1$ 위로, $p_2$를 $l_2$ 위로 동시에 겹치게 하는 접는 선이 존재한다.

여섯 번째 공리가 가장 어렵다. 하나의 곧은 접는 선이 $p_1$을 직선 $l_1$ 위로, 동시에 $p_2$를 직선 $l_2$ 위로 반사시켜야 한다. 배치에 따라 그런 접는 선은 하나도 없을 수도 있고, 하나, 둘, 또는 셋 존재할 수도 있다.

각 테스트 케이스마다 여섯 번째 공리를 만족하는 서로 다른 접는 선의 개수를 구하라. 즉, $p_1$을 $l_1$ 위로, $p_2$를 $l_2$ 위로 동시에 겹치게 하는 서로 다른 직선이 몇 개인지 세어라.

입력

첫 줄에 테스트 케이스의 수 $t$ ($1 \le t \le 20000$)가 주어진다.

각 테스트 케이스는 정확히 네 줄로 주어지며, 순서대로 $l_1$, $p_1$, $l_2$, $p_2$를 나타낸다.

  • 직선은 그 위의 서로 다른 두 점의 좌표인 네 정수 $x_1\ y_1\ x_2\ y_2$로 주어진다.
  • 점은 두 정수 $x\ y$로 주어진다.

모든 좌표는 절댓값이 $10$ 이하인 정수이다. $p_1$은 $l_1$ 위에 있지 않고, $p_2$는 $l_2$ 위에 있지 않음이 보장된다. 두 직선 $l_1$과 $l_2$는 서로 다르지만, 두 점 $p_1$과 $p_2$는 같을 수 있다.

출력

각 테스트 케이스마다 한 줄에 정수 하나를 출력한다. $p_1$을 $l_1$ 위로, $p_2$를 $l_2$ 위로 겹치게 하는 서로 다른 접는 선의 개수이다. 이 값은 항상 $0$, $1$, $2$, $3$ 중 하나이다.

참고

점 $p$를 직선 $l$ 위로 반사시키는 접는 선은 초점이 $p$이고 준선이 $l$인 포물선의 접선과 정확히 일치한다. 따라서 여섯 번째 공리를 만족하는 접는 선은 포물선 $(p_1, l_1)$과 포물선 $(p_2, l_2)$의 공통 접선이다. 서로 다른 두 포물선은 최대 세 개의 일반적인 공통 접선을 가지므로, 답은 결코 셋을 넘지 않는다. $l_1$과 $l_2$가 평행하면 공통 접선의 개수가 둘, 하나, 또는 영으로 줄어들 수 있다.