“—— 听好了,伙计们!这就是我们的林地。砍倒最大的一棵,然后把其他的木头都压在它上面。用钢丝绳把它们都捆在一起,然后用拖拉机把它们拖走。明白了吗?—— 这听起来挺有道理的。留下那些新长出来的小树丛。不用担心树桩。注意钢丝绳!这样我们就能把效益最大化。工资也是……”
——《女孩们》(Devchata)[一部 1962 年的苏联电影]
Ilya Kovrigin 和他的伐木工团队提出了一种新的优化方法。这个想法是将几棵树砍倒,使它们大致落在同一个地方,然后将它们捆在一起并用拖拉机运走。为了解决这个问题,请确定最多可以砍倒多少棵树,使得它们都可以被系到一辆静止的拖拉机上。
假设地面是一个水平面。地面上生长着 $N$ 棵树,每棵树都是一条有向线段,有起点和终点。生长中的树是一条垂直于地面的线段,其起点严格位于地面上。对于每棵树,给出了它的坐标 $(x_i, y_i)$ 和高度 $h_i$。
当一棵树被砍倒时,它成为地面上的一条线段,起点仍在同一点 $(x_i, y_i)$,且长度 $h_i$ 保持不变。砍倒的树从起点指向终点的方向是任意的,由伐木工选择。
拖拉机可以开到任意点。你只能将那些终点与拖拉机的距离不超过 $R$ 的树系到拖拉机上。假设拖拉机和树木之间不会互相阻挡,即没有移动限制。
输入格式
输入的第一行包含一个整数 $N$ —— 林地中树木的数量,以及一个实数 $R$ —— 拖拉机抓取的半径($1 \le N \le 250$,$\frac{1}{10} \le R \le 1\,000$)。
接下来的 $N$ 行描述树木。每棵树由三个实数描述:平面上的坐标 $x_i, y_i$ 和高度 $h_i$($|x_i|, |y_i| \le 1\,000$,$\frac{1}{10} \le h_i \le 1\,000$)。
所有实数的小数位数不超过 15 位。保证任意两棵树之间的距离不小于 $\frac{1}{10}$。保证如果将拖拉机的抓取半径 $R$ 增加 $10^{-3}$,答案中的最大树木数量不会改变。
输出格式
输出的第一行打印一个整数 $A$ —— 一次最多可以系在拖拉机上的树木数量。
第二行打印两个实数 $X^*$ 和 $Y^*$ —— 拖拉机应当停放的位置坐标。
在接下来的 $A$ 行中,指出哪些树必须被砍倒以及如何砍倒。在这些行中的每一行,打印一个整数 $k_i$ —— 要砍倒的树的编号,以及 $\varphi_i$ —— 定义砍伐方向的极角($1 \le k_i \le N$,$0 \le \varphi_i \le 360$)。
树木按照在输入文件中描述的顺序从 1 开始编号。打印树木的顺序无关紧要。极角是以度为单位,从 X 轴正方向开始沿 Y 轴正方向(逆时针)测量的,它定义了砍倒的树从起点到终点的方向。
建议所有实数都保留 15 位小数。评测程序将使用增加 $10^{-6}$ 后的半径 $R$ 来检验你的方案。
样例
输入样例 1
5 1.0 8.0 4.0 2.0 11.13 9.19 0.55 3 3 3 12 6 1 6 8 2
输出样例 1
3 6 5.41234567890 1 130 5 259.726501937845610 3 35