题目描述
在本题中,一个程序由有限个正有理数组成。设这些有理数依次为 N0/D0,N1/D1,…,程序的全部内存只有一个正整数 M。
程序每一步按如下规则执行:从前往后寻找最小的下标 i,使得 M×Ni/Di 是整数。如果不存在这样的 i,程序立即终止;否则令 M←M×Ni/Di,然后继续执行下一步。注意分数的顺序非常重要。
例如程序 {1/8,9/4,3/2} 从 M=210=1024 开始时,M 会依次变成 128,16,2,3,随后终止。
你的任务是构造一个这样的程序。对于给定的整数 L,本题评测器会检查所有满足 0≤x,y≤L 的整数对。若程序开始时
M=2x⋅3y⋅7,
则它必须最终终止,并且终止时满足
M=5xy。
你构造的程序还必须满足:
- 分数条数不超过 25;
- 对任意被检查的 (x,y),执行步数不超过 6000;
- 每个分子、分母都是正整数,并且不超过 231−1;
- 程序执行过程中,M 始终不超过 102500。
答案不唯一,本题使用 Special Judge。
输入格式
输入仅一行,一个整数 L。
输出格式
第一行输出一个正偶数 K,表示第二行整数的个数,要求 K≤50。
第二行输出 K 个正整数:
N0 D0 N1 D1 ...
它们依次表示程序中的分数 N0/D0,N1/D1,…,NK/2−1/DK/2−1。
数据范围
0≤L≤20。
样例输入
2
样例输出
14
625 252 25 84 25 126 5 42 1 2 1 3 1 7
样例说明
上面的输出表示程序
{625/252,25/84,25/126,5/42,1/2,1/3,1/7}。
对于 0≤x,y≤2 的所有九种初值,它都能得到要求的最终结果。由于本题答案不唯一,你的输出不需要与样例相同。