题目描述
我们有一个由 N 个正整数组成的序列:A1,A2,cdots,AN。你需要将这些整数重新排列成另一个序列 x1,x2,cdots,xN,其中 x 必须满足以下条件:
- 我们定义 yi=operatornameLCM(x1,x2,cdots,xi),其中 operatornameLCM 函数返回给定整数的最小公倍数。那么,y 是严格递增的。换句话说,满足 y1<y2<cdots<yN。
判断是否可能形成满足条件的序列 x,如果可能,请展示一个满足条件的序列。
约束条件
- 1leqNleq100
- 2leqA1<A2cdots<ANleq1018
- 输入中的所有值都是整数。
输入
从标准输入读入数据,格式如下:
N
A1 A2 cdots AN
输出
如果可以形成满足条件的序列 x,请按照以下格式打印答案:
Yes
x1 x2 cdots xN
如果不可能形成满足条件的序列,打印 No
。
示例输入 1
3
3 4 6
示例输出 1
Yes
3 6 4
对于 x=(3,6,4),我们有:
- y1=operatornameLCM(3)=3
- y2=operatornameLCM(3,6)=6
- y3=operatornameLCM(3,6,4)=12
其中,y1<y2<y3。
示例输入 2
3
2 3 6
示例输出 2
No
无法通过 A 的任何排列满足条件。
示例输入 3
10
922513 346046618969 3247317977078471 4638516664311857 18332844097865861 81706734998806133 116282391418772039 134115264093375553 156087536381939527 255595307440611247
示例输出 3
Yes
922513 346046618969 116282391418772039 81706734998806133 255595307440611247 156087536381939527 134115264093375553 18332844097865861 3247317977078471 4638516664311857