你是一名在未来公司 RoboCorp 工作的冒险者。你的初始技能等级是区间 $[1, n]$ 内的一个整数,但你不知道它的确切值。你的目标是通过为 RoboCorp 完成任务,使你的技能等级达到至少 $n$,但每个任务都需要花费珍贵的机器币。
你可以选择任何难度和任何正整数持续时间(以小时为单位)的任务。然而,任务的花费既取决于新任务的长度,也取决于新任务的难度与你最近一次任务难度的对比。
设 $x$ 为你最近一次任务的难度。如果你想接受一个难度为 $y$、持续时间为 $l$ 的新任务:
- 如果这是你的第一个任务,或者 $y \le x$,则花费为 $l$ 机器币。
- 如果 $y > x$,则花费为 $1000 + l$ 机器币。
只有当你接受的任务难度 $y$ 与你当前的技能等级 $s$ 完全匹配时,你的技能才会提升:
- 如果 $y = s$,那么你的技能等级会增加 $l$。
- 否则,你的技能等级不会改变。
在每次任务之后,你仍然不知道自己确切的技能等级。
你开始时拥有 $10^6$ 机器币。请找到一种策略(一个任务序列),在不超过预算的前提下,保证无论你的初始技能等级是多少,最终你的技能等级都能达到至少 $n$。
输入格式
输入包含单行,其中有一个整数 $n$ ($1 \le n \le 250\,000$) —— 目标技能等级(即在结束时,你的技能等级必须大于或等于 $n$)。
输出格式
在第一行中,输出一个整数 $k$ ($0 \le k \le 10^6$) —— 你计划完成的任务数量。
接下来输出 $k$ 行。第 $i$ 行必须包含两个整数 $y$ 和 $l$ ($1 \le y, l \le 10^6$) —— 分别表示第 $i$ 个任务的难度和持续时间(以小时为单位)。
样例
输入样例 1
4
输出样例 1
4 1 4 3 1 2 1 3 1
说明
样例 1 说明。在样例中,你的目标技能等级为 $n = 4$。你可以使用以下策略:
- 接受一个难度为 $y = 1$、持续时间为 $l = 4$ 的任务。这是你的第一个任务,因此你支付 $l = 4$ 机器币。
- 接受一个难度为 $y = 3$、持续时间为 $l = 1$ 的任务。前一个任务的难度为 $x = 1$,由于 $y > x$,你支付 $l + 1000 = 1001$ 机器币。
- 接受一个难度为 $y = 2$、持续时间为 $l = 1$ 的任务。此时 $x = 3$,由于 $y \le x$,你支付 $l = 1$ 机器币。
- 接受一个难度为 $y = 3$、持续时间为 $l = 1$ 的任务。此时 $x = 2$,由于 $y > x$,你支付 $l + 1000 = 1001$ 机器币。
总共,你花费了 $2007$ 机器币,这在你的 $10^6$ 机器币预算之内。
现在我们验证该策略是否总是有效:
- 如果你的初始技能等级为 1,在第一个任务后它变为 5。
- 如果你的初始技能等级为 2,在第三个任务后它变为 3,在第四个任务后它变为 4。
- 如果你的初始技能等级为 3,在第二个任务后它变为 4。
- 如果你的初始技能等级为 4,它保持为 4。
因此,无论你的初始技能等级是多少,你最终的技能等级都会 $\ge n$。