大家都知道萨格勒布圣诞集市上的每一个摊位其实都是通过走后门设立的。今年,当局决定派遣检查组,对那些非法设立的摊位进行处罚。
这里有 $n$ 个摊位,可以表示为平面上的点,且其中任意三点都不共线。当局将识别出那些存在腐败行为的摊位,并将它们与城镇的其他部分隔离开来。围栏将包围这些摊位,并形成包含所有这些摊位的最小凸多边形。换句话说,围栏可以被看作是所选点集的凸包边界。不幸的是,一些无辜的摊位也可能被围在里面。
在实地检查之前,当局估计任何特定摊位存在腐败行为的概率为 $50\%$。考虑到这一点,他们想知道最终会被围起来的摊位数量的期望值是多少。期望值的定义是:将某个摊位子集被选中的概率乘以该选择下被围起来的摊位数量,并对所有可能的子集选择求和。当然,如果所选子集包含的点少于三个,则凸包是退化的,即为一个线段、一个点或空集。
可以证明,所求的期望值可以写成 $\frac{m}{2^n}$ 的形式,其中 $m$ 为某个正整数。当局想知道这个期望值,所以他们请求你计算 $m$ 的值。由于答案可能非常大,你需要输出其对 $10^9 + 7$ 取模的结果。
输入格式
第一行包含一个正整数 $n$ ($1 \le n \le 1000$),表示摊位的数量。
接下来的 $n$ 行中,第 $i$ 行包含一对整数 $x_i, y_i$ ($|x_i|, |y_i| \le 10^6$),分别表示第 $i$ 个摊位的 $x$ 和 $y$ 坐标。没有两个摊位位于相同的位置。
任意三点都不共线。
输出格式
仅输出一行,包含上述 $m$ 对 $10^9 + 7$ 取模的结果。
评分标准
| 子任务 | 分值 | 数据范围 |
|---|---|---|
| 1 | 10 | 所有点都在所有点的凸包边界上,且 $n \ge 3$ |
| 2 | 30 | 除了第一个点外,所有点都在所有点的凸包边界上,第一个点在内部,且 $n \ge 4, x_1 = y_1 = 0$ |
| 3 | 10 | $1 \le n \le 15$ |
| 4 | 30 | $1 \le n \le 100$ |
| 5 | 30 | 无附加限制 |
样例
输入格式 1
1 5 5
输出格式 1
1
说明
第一个摊位被围起来的概率是 $50\%$,因此期望值为 $\frac{1}{2}$。
输入格式 2
3 -1 -1 1 -1 0 1
输出格式 2
12
说明
共有八种可能的子集选择,这些选择下被围起来的摊位数量分别为 $0, 1, 1, 1, 2, 2, 2, 3$。期望值为 $\frac{1}{8}(0 + 1 + 1 + 1 + 2 + 2 + 2 + 3) = \frac{12}{8}$。
输入格式 3
5 0 0 -1 0 2 -1 3 2 0 3
输出格式 3
83