问题描述
给定一个由 N 个正整数组成的序列 A=(A1,A2,…,AN)。判断是否存在满足以下条件的序列对 $B = (B_1, B_2, \dots, B_x), C = (C_1, C_2, \dots, C_y)$,如果存在,则输出一对满足条件的序列。
- 1≤x,y≤N;
- 1≤B1<B2<⋯<Bx≤N;
- 1≤C1<C2<⋯<Cy≤N;
- 序列 B 和 C 不同。
- 当且仅当 x=y 或存在 1≤i≤min(x,y) 使得 Bi=Ci,则认为 B 和 C 不同。
- 满足 AB1+AB2+⋯+ABx 与 AC1+AC2+⋯+ACy 在模 200 下相等。
约束条件
- 输入中的所有值都为整数。
- 2≤N≤200
- 1≤Ai≤109
输入
输入以以下格式从标准输入中给出:
N
A1 A2 … AN
输出
如果不存在满足条件的序列对 B,C,则打印一行 No
。
否则,以以下格式打印你选择的 B 和 C:
Yes
x B1 B2 … Bx
y C1 C2 … Cy
检查器不区分大小写:可以使用大写或小写字母。
示例输入 1
5
180 186 189 191 218
示例输出 1
Yes
1 1
2 3 4
对于 B=(1),C=(3,4),有 A1=180,A3+A4=380,在模 200 下相等。
还有其他解也被接受,比如:
yEs
4 2 3 4 5
3 1 2 5
示例输入 2
2
123 523
示例输出 2
Yes
1 1
1 2
示例输入 3
6
2013 1012 2765 2021 508 6971
示例输出 3
No
如果不存在满足条件的序列对,则打印一行 No
。