장난꾼 몇 명이 다큐멘터리 채널을 너무 많이 본 끝에 밤사이 밭에 크롭 트라이앵글을 만들기로 했다. 위에서 내려다보면 일정한 간격의 격자처럼 보이는 넓은 밭이 무대다. 밭에는 나무가 몇 그루 심겨 있고, 나무는 모두 격자선이 만나는 점(격자점) 위에 서 있다. 장난꾼은 삼각형의 세 꼭짓점을 나무 위에 두려고 한다. 여기에 재미를 더하려고 삼각형의 무게중심도 격자점에 놓이게 하려 한다. 세 꼭짓점이 (x1,y1), (x2,y2), (x3,y3)인 삼각형의 무게중심은 (3x1+x2+x3,3y1+y2+y3)이다.
밭에 있는 모든 나무의 정수 좌표가 주어진다. 서로 다른 세 나무를 꼭짓점으로 골라 만든 삼각형 가운데 무게중심의 두 좌표가 모두 정수인 것이 몇 개인지 구한다.
세 나무가 한 직선 위에 있어 면적이 0이 되는 경우도 삼각형으로 센다.
첫째 줄에 테스트 케이스의 개수 N이 주어진다. 이어서 N개의 테스트 케이스가 주어진다. 각 테스트 케이스는 한 줄이고, 정수 n, A, B, C, D, x0, y0, M이 공백 한 칸으로 구분되어 주어진다. n은 나무의 개수다.
나무의 좌표는 다음 의사 코드가 출력하는 순서와 같다. mod는 나머지 연산이다.
X = x0, Y = y0
print X, Y
for i = 1 to n-1
X = (A * X + B) mod M
Y = (C * Y + D) mod M
print X, Y
좌표가 같은 나무가 두 번 나오지 않도록 매개변수가 주어진다.
제한
각 테스트 케이스마다 한 줄에 Case #X: 를 출력한다. X는 1부터 시작하는 테스트 케이스 번호다. 그 뒤에 서로 다른 세 나무를 꼭짓점으로 하고 무게중심이 격자점인 삼각형의 개수를 정수로 출력한다.
예제 입력의 첫 테스트 케이스에서 만들어지는 나무 네 그루의 좌표는 (0,1), (7,3), (17,5), (17,7)이다.