你刚刚在你的橡皮鸭收藏中添加了一件皇冠明珠:一只皇家橡皮鸭。不幸的是,Akulyat 已经闻到了风声,正全速赶往你的保险库企图偷走它。
为了保护它,你将这只鸭子放在了保险库中最安全的房间里。这个房间的形状是一个拥有 $n$ 个顶点的凸多边形,因此有 $n$ 面墙。在顶点 1 处有一扇安全门。这扇门配备了红外激光系统,保护着墙 1(顶点 1 和 2 之间)和墙 $n$(顶点 $n$ 和 1 之间)。
然而,你担心未受保护的墙 2 到墙 $n - 1$。幸运的是,安全系统在顶点 1 处还安装了一个强大的激光发射器和接收器。你希望调整激光的方向,使得:
- 它从顶点 1 出发,
- 严格按照墙 2、墙 3、……、墙 $n - 1$ 的顺序依次反射,
- 最后精准地返回到顶点 1。
所有反射都遵循理想光学定律(入射角等于反射角),且多边形是凸的。你需要确定是否可以按上述方式调整激光。如果可以,计算所需的发射角度。
基准方向(角度 $0^\circ$)为 $x$ 轴正方向,角度以逆时针方向的度数衡量。
重要提示:为了不破坏光学系统,你决定让所有反射点都严格位于其对应墙壁的内部:更具体地说,距离两个端点至少 $10^{-5}$ 个相对单位。形式化地,对于墙壁 $[a, b]$,合法的反射点 $p$ 具有 $p = \alpha a + (1 - \alpha)b$ 的形式,其中 $\min(\alpha, 1 - \alpha) \ge 10^{-5}$。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 1000$)。接下来是测试用例的描述。
对于每个测试用例,第一行包含一个整数 $n$($3 \le n \le 20$):凸多边形的顶点数。
接下来的 $n$ 行,每行包含两个整数 $x_i$ 和 $y_i$($-10^9 \le x_i, y_i \le 10^9$):顶点的坐标。顶点按逆时针顺序给出,并构成一个严格凸多边形。
输出格式
对于每个测试用例,如果没有解,输出单行 "NO"。
否则输出两行。第一行必须包含 "YES"。第二行输出一个实数 $d$($-180 \le d \le 180$):激光射向墙 2 时,相对于 $x$ 轴正方向(逆时针)的角度(以度为单位)。
光线的轨迹应按要求的顺序击中所有墙壁内部的点,并结束于顶点 1 的 $10^{-7}$ 邻域内。顶点 1 的 $10^{-7}$ 邻域定义为墙 1 或墙 $n$ 上的任意点 $(x, y)$,满足 $(x_1 - x)^2 + (y_1 - y)^2 < (10^{-7} \cdot L)^2$,其中 $L$ 是多边形周长(各边总长度)。
如果有多个角度满足条件,输出任意一个合适的角度。
样例
输入样例 1
2 3 1 2 0 0 2 0 4 0 0 1 0 1 1 0 1
输出样例 1
YES -90 NO
输入样例 2
3 4 0 0 4 0 5 4 -1 4 5 -809016994 -587785252 309016994 -951056516 1000000000 0 309016994 951056516 -809016994 587785252 6 -1000000000 0 -500000000 -866025404 500000000 -866025404 1000000000 0 500000000 866025404 -500000000 866025404
输出样例 2
YES 24.623564786163612980174342226292 YES 9.732301397707778775440778940009 NO
说明
题面中给出了第二个样例中第一个测试用例的示意图。
保证对于每个答案为 "YES" 的测试用例,都存在一个发射角度,其所有反射点 $p = \alpha a + (1 - \alpha)b$ 均满足 $\min(\alpha, 1 - \alpha) \ge 10^{-5} + 10^{-9}$。同时也保证对于每个答案为 "NO" 的测试用例,不存在“几乎合法”的发射角度:这意味着在某个点上,要么没有交点,要么满足 $\min(\alpha, 1 - \alpha) < 10^{-5} - 10^{-9}$。