Bajtazar 正驾驶着他的新跑车前往海边。他行驶在高速公路上,作为一名合格的司机,他行驶在右侧车道。然而,在他前方的右侧车道上还有 $n$ 辆卡车,他必须超车。
我们将卡车从 $1$ 到 $n$ 编号,从最靠近 Bajtazar 汽车的那辆开始;第 $i$ 辆卡车以速度 $v_i$ 行驶,长度为 $d_i$,初始时刻位于 Bajtazar 汽车前方 $x_i$ 处。为简化起见,我们将车辆视为没有边缘的矩形,并以其前端作为位置坐标。
如果由于速度差异,第 $i$ 辆卡车的前端追上了其前方卡车(即第 $i+1$ 辆)的后端,则第 $i$ 辆卡车会减速至与第 $i+1$ 辆卡车相同的速度(即卡车之间不会互相超车)。
Bajtazar 以速度 $V$ 行驶,速度快于每一辆卡车(对于所有 $i$,都有 $V > v_i$),他的车长为 $D$。当他的车前端追上某辆卡车的后端时,Bajtazar 会立即执行变道操作,并继续在左侧车道行驶。一旦可以变回右侧车道,Bajtazar 就会执行该操作(即使在同一时刻他可能需要再次变回左侧车道)。
Bajtazar 想知道,在超车所有卡车的过程中,他会执行多少次从右侧车道变到左侧车道的操作。假设当前高速公路上没有其他车辆。
输入格式
第一行包含四个整数 $n, D, W, M$ ($1 \le n \le 100\,000, 1 \le D \le 10^9, 1 \le W, M \le 1000$),分别表示卡车数量、Bajtazar 的车长以及他通过公式 $V = W/M$ 计算出的速度。
接下来的 $n$ 行描述了卡车;第 $i$ 行包含四个整数 $x_i, d_i, w_i, m_i$ ($1 \le x_i, d_i \le 10^9, 1 \le w_i, m_i \le 1000$)。卡车的速度为 $v_i = w_i/m_i$。
车辆不会重叠,即对于 $1 \le i < n$,满足 $0 \le x_1 - d_1$ 以及 $x_i \le x_{i+1} - d_{i+1}$。
所有长度和位置均以距离单位表示,速度以距离单位每时间单位表示。
输出格式
你的程序应输出一行,包含一个整数,表示 Bajtazar 执行变道至左侧车道的次数。
样例
样例输入 1
3 1 1 1 3 2 1 4 6 3 1 2 10 2 1 4
样例输出 1
2
说明 1
Bajtazar 的车以速度 $1$ 行驶,卡车的速度分别为 $\frac{1}{4}, \frac{1}{2}, \frac{1}{4}$。在时刻 $1\frac{1}{3}$,Bajtazar 追上第一辆卡车并变道至左侧,在时刻 $5\frac{1}{3}$ 回到右侧车道。在时刻 $6$,他第二次变道至左侧。在时刻 $8$,第二辆卡车追上第三辆卡车并减速至 $\frac{1}{4}$。在时刻 $14\frac{2}{3}$,Bajtazar 回到右侧车道。
子任务
测试集分为以下子任务。每个子任务的测试用例由一个或多个独立的测试组组成。
| 子任务 | 数据范围 | 分值 |
|---|---|---|
| 1 | 所有 $v_i$ 相等 | 10 |
| 2 | 序列 $v_i$ 非递减 ($v_i \le v_{i+1}$) | 20 |
| 3 | $n \le 1000$ | 35 |
| 4 | 无额外限制 | 35 |