#CF1984H. 塔的占领
塔的占领
H. 塔的占领
时间限制:2 秒
内存限制:256 兆字节
有 座塔,位于 个不同的点 ,满足任意三点不共线,且任意四点不共圆。最初,你拥有塔 和 ,你想要占领所有塔。为此,你可以任意多次执行以下操作:
- 选择两座你拥有的塔 和 ,以及一座你未拥有的塔 ,使得经过 、 和 的圆包含所有 座塔在其内部。
- 然后,占领三角形 内部及边界上的所有塔(包括 本身)。
一个攻击计划是指一系列选择 ()的序列,按照上述操作最终占领所有塔。注意:两个攻击计划仅当它们在某次操作中选择的 不同时才视为不同;特别地,如果两个计划使用了相同的 序列但不同的 和 ,它们被认为是相同的。
请计算最短长度的攻击计划的数量。注意,可能无法占领所有塔,此时答案为 。
由于答案可能很大,请对 取模输出。
输入
第一行包含一个整数 ()——测试用例的数量。
每个测试用例的第一行包含一个整数 ()——塔的数量。
接下来 行,第 行包含两个整数 和 ()——第 座塔的位置。最初,你拥有塔 和 。
所有塔的位置互不相同,任意三点不共线,任意四点不共圆。
所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出一个整数——最短长度的攻击计划的数量,对 取模。
示例
输入
3
5
1 1
2 5
3 3
4 2
5 4
6
1 1
3 3
1 2
2 1
3 10000
19 84
7
2 7
-4 -3
-3 6
3 1
-5 2
1 -4
-1 7
输出
1
0
10
注释
在第一个测试用例中,只有一种最短长度的攻击计划,如下所示:
- 使用操作, 塔 , 塔 , 塔 。经过这三座塔的圆包含所有塔在其内部,结果占领了塔 和塔 。
- 使用操作, 塔 , 塔 , 塔 。经过这三座塔的圆包含所有塔在其内部,结果占领了塔 。
在第二个测试用例中,例如,你永远无法占领位于 的塔。