考虑二维平面 $Oxy$。平面上有 $n$ 个聚光灯。当第 $i$ 个聚光灯放置在某一点并开启时,它会照亮所有属于一个角度为 $\phi_i$ ($0^\circ < \phi_i < 360^\circ$) 的扇形区域(包括内部和边界)的点,且该扇形的顶点位于所选点处(顶点也被视为被照亮)。每个聚光灯都可以任意旋转,并可以放置在平面上的任意一点。
你和你的朋友们想要照亮整个平面,以保护某些非常重要的东西免受入侵。起初,你们尝试将所有聚光灯放在同一点,但经过几次尝试后,你们发现无论如何旋转这些聚光灯,都无法照亮平面上的每一个点。之后,你的一个朋友建议,如果以某种最优方式分散放置这些聚光灯,就有可能照亮整个平面。他甚至告诉了你们应该将聚光灯放置在哪些点,以及如何旋转它们。
凭借敏锐的数学直觉,你怀疑他是错的,整个平面仍然没有被完全照亮。为了证明他是错的,你打算找出一个半径为 1 的未被照亮的圆(即该圆内部及其边界上的所有点都不应被照亮),这代表了一个能够躲在黑暗中而不被聚光灯照到的入侵者。
请编写一个程序,给定所有聚光灯的描述,找出一个点 $(x_0, y_0)$,使得以 $(x_0, y_0)$ 为圆心、半径为 1 的圆完全不被聚光灯照亮。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 2 \cdot 10^5$),表示聚光灯的数量。
接下来的 $n$ 行包含聚光灯的描述。每个聚光灯的描述由四个整数 $x_i, y_i, \phi_i, \alpha_i$ ($-50 \le x_i, y_i \le 50, 0 < \phi_i < 1\,296\,000, 0 \le \alpha_i < 1\,296\,000$) 组成。其中 $x_i$ 和 $y_i$ 是对应聚光灯的坐标,$\phi_i$ 和 $\alpha_i$ 是以角秒为单位的角度(详见说明部分),分别表示聚光灯的张角和旋转角度。
旋转角度的定义如下:考虑以 $(x_i, y_i)$ 为起点,沿 $x$ 轴正方向的水平射线,记为 $l_0$。记 $l_\gamma$ 为射线 $l_0$ 绕点 $(x_i, y_i)$ 逆时针旋转 $\gamma$ 角后的结果。那么,聚光灯照亮的区域是射线从方向 $l_{\alpha_i}$ 逆时针旋转到方向 $l_{\alpha_i+\phi_i}$ 所扫过的所有点。
输入格式示意图。
保证如果将给定的所有聚光灯放在同一点并任意旋转,它们无法照亮整个平面。
输出格式
如果你的直觉错了,整个平面实际上被照亮了,请仅输出单词 “NO”。
否则,在第一行输出单词 “YES”,并在下一行输出两个整数 $x_0, y_0$,满足 $-10^9 \le x_0, y_0 \le 10^9$,即某个未被照亮圆的圆心坐标。保证如果存在一个未被照亮的点,则一定存在一个满足上述条件的未被照亮的圆。
样例
输入 1
4 1 2 486000 0 -1 1 324000 648000 1 0 108000 0 1 0 108000 1188000
输出 1
YES -3 3
说明
样例测试示意图。
角秒是一种角度测量单位,记作 $''$。它等于 $1$ 度的 $\frac{1}{3600}$,即一个完整的圆等于 $1\,296\,000''$。