在电子游戏 MountainCraft 的元世界中,今天又是美好的一天!顾名思义,MountainCraft 拥有一个广阔的开放世界,到处都是可供探索的山脉。你的游戏化身在一个偏远的岛屿上醒来,凝视着地平线上的群山。
地平线的视野可以建模为一个笛卡尔平面,其中 $x$ 轴 ($y = 0$) 将陆地与海洋分开。每座山峰由一个点 $(x, y)$ 表示,山的两侧斜率分别为 $+1$ 和 $-1$,与山峰共同构成一个三角形。
你的化身只能看到视野范围(viewport)内的山脉部分。山脉的可见边缘(即不与其他山脉重叠的部分)以粗体渲染。如果山脉发生重叠,重叠的部分将不会以粗体渲染。山脉重叠并不要求边缘必须相交。
图 1:所有山脉出现后的第一个样例输入。
不幸的是,由于图形故障,山脉会不断出现和消失。在每次变化后,你需要知道当前视野中所有可见粗体线的总长度。
输入格式
输入的第一行包含两个整数 $q$ ($1 \le q \le 2 \cdot 10^5$) 和 $w$ ($1 \le w \le 10^9$),其中 $q$ 是查询次数,$w$ 是视野的宽度。视野的宽度范围从 $0$ 到 $w$。视野在上方是无界的。
接下来的 $q$ 行,每行包含两个整数 $x$ ($0 \le x \le w$) 和 $y$ ($0 < y \le 10^9$),表示某座山峰的坐标。如果 $(x, y)$ 是一座当前可见山脉的山峰,则该山脉消失。否则,该山脉将变为可见。
输出格式
输出 $q$ 行。对于每次查询,按顺序输出一行,包含一个数字,即渲染出的粗体线的总长度。如果你的答案与裁判答案的绝对误差或相对误差在 $10^{-6}$ 以内,则会被接受。
样例
样例输入 1
3 10 3 2 7 3 9 6
样例输出 1
5.656854 12.727922 12.727922
样例输入 2
5 100 31 41 59 26 31 41 59 26 31 41
样例输出 2
101.823376 120.208153 73.539105 0.000000 101.823376
说明
在第一个样例中,前两座山脉在点 $(4.5, 0.5)$ 处相交。该点下方的山脉部分不会被渲染为粗体。
在第二个样例中,左侧山脉出现,然后消失,接着再次出现。右侧山脉出现,然后消失。