题目描述
给定两个非负整数序列 A=(A1,…,AN) 和 B=(B1,…,BN)。
请判断是否可以通过进行 0 次到 N 次以下的如下操作,将 A 变为 B。
- 操作:选择满足 0≤x<y≤1018 的整数 x,y。对于所有 i,将 Ai 替换为 (Ai+x)mody。
如果可以将 A 变为 B,请输出一种操作方案。
输入格式
输入通过标准输入给出,格式如下:
N A1 … AN B1 … BN
输出格式
如果无法通过 0 次到 N 次以下的操作将 A 变为 B,请输出:
No
如果可以,请输出操作方案,格式如下:
Yes K x1 y1
⋮
xK yK
其中 K 表示操作次数,xi,yi 表示第 i 次操作选择的整数 x,y,需满足:
- 0≤K≤N
- 0≤xi<yi≤1018
如果存在多种满足条件的操作方案,输出任意一种均可。
样例 1
输入
4
7 2 4 5
3 3 5 0
输出
Yes
2
3 5
3 6
样例 2
输入
1
5
3
输出
Yes
1
2 4
样例 3
输入
2
3 1
3 1
输出
Yes
0
样例 4
输入
2
0 0
1 2
输出
No
说明/提示
限制条件
- 1≤N≤1000
- 0≤Ai≤109
- 0≤Bi≤109
样例说明 1
可以如下将 A 变为 B:
- 初始 A=(7,2,4,5)。
- 进行操作 (x,y)=(3,5) 后,A=(0,0,2,3)。
- 进行操作 (x,y)=(3,6) 后,A=(3,3,5,0)。
由 ChatGPT 4.1 翻译