「LAOI-15」异变危机
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}给定十进制数字串 s 和目标十进制数字串 t。小玖可以进行不超过两轮修改,第 i 轮操作步骤如下:
\hspace{23pt}\bullet\,第一步:选择一个整数进制 x_i \left(2 \leq x_i \leq 10^{18} \right),使得当前串直接看作 x_i 进制也依旧是合法的(即每一位均小于 x_i)。
\hspace{23pt}\bullet\,第二步:选择一个整数进制 y_i \left(2 \leq y_i \leq 10^{18} \right),将当前看作 x_i 进制的串 s 转换为 y_i 进制下的形式,记为 (s')_{y_i}
\hspace{23pt}\bullet\,第三步:将 (s')_{y_i} 中的字符依次取出,拼接成为新的 s
\hspace{15pt}特别地,对于最后一轮操作,y_i 必须为 10;且任何时候,所得到的串转换回十进制后不得大于 10^{18}

\hspace{15pt}在整个过程中,每一轮转换产生的中间串仅为概念上的存在,其具体的字符表示形式无需考虑,因为它将立即在下一轮操作的第一步中被重新解释。
\hspace{15pt}请你构造一种操作方案,使得最终的 (s)_{10} 恰好为 t。或报告无解。

输入描述:

\hspace{15pt}在一行上输入两个十进制整数 s,t \left(1\le s,t\le 10^{18}\right),代表初始的数码串、目标数码串。

输出描述:

\hspace{15pt}若无解,直接输出 \texttt{NO}。否则,请参考下方的格式输出。
\hspace{23pt}\bullet\,第一行输出 \texttt{YES}
\hspace{23pt}\bullet\,第二行输出一个整数 q \left(0\le q\le 2\right),表示操作次数;
\hspace{23pt}\bullet\,此后 q 行,第 i 行输出两个正整数 x_i , y_i,表示第 i 次操作的进制。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
114 514

输出

复制
YES
2
5 10
170 10

说明

\hspace{15pt}在这个样例中:
\hspace{23pt}\bullet\,第一轮,先选择整数进制 x_1=5,数字串变为 (114)_{10} \to (114)_{5};再选择整数进制 y_1=10,数字串变为 (114)_{5}=(34)_{10}
\hspace{23pt}\bullet\,第二轮,先选择整数进制 x_2=170,数字串变为 (34)_{10} \to (34)_{170};再选择整数进制 y_2=10,数字串变为 (34)_{170}=(514)_{10}
示例2

输入

复制
15295 43981

输出

复制
YES
2
12 14
16 10

说明

\hspace{15pt}为了便于形象描述,我们首先定义一种特殊的 14 进制,其中 (\texttt{T})_{14} 表示 (10)_{10}(\texttt{J})_{14} 表示 (11)_{10}(\texttt{Q})_{14} 表示 (12)_{10}(\texttt{K})_{14} 表示 (13)_{10},随后:
\hspace{23pt}\bullet\,第一轮,先选择整数进制 x_1=12,数字串变为 (15295)_{10} \to (15295)_{12};再选择整数进制 y_1=14,数字串变为 (15295)_{12}=({\texttt{TJQK}})_{14}
\hspace{23pt}\bullet\,第二轮,先选择整数进制 x_2=16,数字串变为 ({\texttt{TJQK}})_{14} \to ({\texttt{TJQK}})_{16};再选择整数进制 y_2=10,数字串变为 ({\texttt{TJQK}})_{16}=(43981)_{10}
示例3

输入

复制
5 1

输出

复制
NO

备注: