Bobo 正在探索二维平面上的一组格点。初始时,点集定义为 $S = \{(0, 0), (A, 0), (0, B), (A, B)\}$。Bobo 的目标是将特定的格点 $(X, Y)$ 加入到 $S$ 中。为了达到这个目标,Bobo 可以执行以下操作:
- 选择两个格点 $P, Q \in S$,使得 $\frac{P+Q}{2}$ 也是一个格点,并将 $\frac{P+Q}{2}$ 加入到 $S$ 中。
你的任务是帮助 Bobo 找到一个操作序列,使得达到目标的操作步数最少,或者判断是否无法达到目标。
输入格式
第一行包含两个整数 $A$ 和 $B$ ($0 \le A, B \le 10^9$),描述初始格点的参数。
第二行包含两个整数 $X$ 和 $Y$ ($0 \le X \le A, 0 \le Y \le B$),表示目标格点的坐标。
输出格式
如果无法达到目标,输出 $-1$。否则,第一行输出一个整数 $k$ ($0 \le k \le 10^5$),表示执行的操作总数。接下来 $k$ 行,第 $i$ 行包含四个整数 $U_i, V_i, S_i, T_i$ ($0 \le U_i, V_i, S_i, T_i \le 10^9$),描述第 $i$ 次操作中选择的格点 $P = (U_i, V_i)$ 和 $Q = (S_i, T_i)$。如果存在多种解,输出任意一种即可。
样例
样例 1
2 2 1 1
1 0 0 2 2
样例 2
8 8 5 0
3 0 0 8 0 4 0 8 0 4 0 6 0
样例 3
0 0 0 0
0
样例 4
2024 0 1012 0
1 0 0 2024 0
样例 5
2024 2024 2023 2023
-1
样例 6
8 6 7 3
3 0 0 8 0 4 0 8 0 6 0 8 6