Public Judge

pjudge

Time Limit: 2.5 s Memory Limit: 1024 MB Total points: 7
[0]
Statistics

小喝粥是小青鱼的好朋友,也是著名演艺团体一路向左的成员。最近,他一直在练习识别舞台上的方向能力。为了练习,他在舞台上选定了 n 个\textbf{不同的}点 A1,A2,,An。舞台被表示为一个二维笛卡尔平面,其中第 i 个点位于坐标 (xi,yi) 处。小喝粥的目标是按顺序 p1,p2,,pn 遍历所有这些点。一次遍历是一个长度为 n 的排列 p,其中每个点 Api 通过一个有向线段连接到 Api+1

小喝粥认为,只有当以下条件成立时,一次遍历才被认为是好的:

  • 它是不自交的。也就是除了相邻的两条线段会在端点处相交,其他的都是不交的。
  • 这条折线只会左转,或者直行。即对于所有 1in2ApiApi+1Api+1Api+2 的叉积,是非负的。

小喝粥想知道好的遍历数目对 (109+7) 取模后的结果。然而,他需要和小青鱼在一起摸鱼,无法自己解决这个挑战。请你帮助他计算!

输入格式

第一行包含一个正整数 T (1T104),表示数据组数。

对于每组测试数据,第一行包含一个整数 n (1n2×103)。

接下来 n 行,其中第 i 行包含两个整数 xiyi (1xi,yi109),表示 Ai 的坐标,保证所有点的坐标两两不同。

保证所有测试数据中的 n2 之和不超过 4×106

输出格式

对于每组测试数据,输出一行一个数,表示满足条件的折线个数取模 (109+7)

样例数据

input

15
1
1 1
2
1 1
1 2
3
1 1
1 2
1 3
3
1 1
1 2
2 2
5
1 1
1 3
2 2
3 1
3 3
6
1 1
1 3
2 2
3 2
4 1
4 3
6
1 3
2 1
2 2
2 3
2 4
3 2
6
1 1
5 1
3 5
2 2
4 2
3 3
7
1 1
5 1
2 2
3 2
4 2
3 3
3 4
6
2 10
8 9
2 3
2 5
3 5
2 6
10
1 10
7 6
8 4
3 8
6 9
3 7
6 8
8 5
10 9
8 8
8
1 1
2 3
2 4
1 6
5 3
5 4
6 1
6 6
8
1 1
2 3
3 3
4 2
4 4
5 1
1 5
5 5
5
1 1
2 999999998
2 999999999
2 1000000000
3 1
6
1 1
1 1000000000
1000000000 1
1000000000 1000000000
999999999 999999998
999999998 999999997

output

1
2
2
3
8
14
12
16
22
10
54
32
28
10
14

子任务

子任务一(7 分)

没有额外的限制。