#arc122e. [arc122_e]Increasing LCMs

[arc122_e]Increasing LCMs

题目描述

我们有一个由 NN 个正整数组成的序列:A1,A2,cdots,ANA_1,A_2,\\cdots,A_N。你需要将这些整数重新排列成另一个序列 x1,x2,cdots,xNx_1,x_2,\\cdots,x_N,其中 xx 必须满足以下条件:

  • 我们定义 yi=operatornameLCM(x1,x2,cdots,xi)y_i=\\operatorname{LCM}(x_1,x_2,\\cdots,x_i),其中 operatornameLCM\\operatorname{LCM} 函数返回给定整数的最小公倍数。那么,yy 是严格递增的。换句话说,满足 y1<y2<cdots<yNy_1<y_2<\\cdots<y_N

判断是否可能形成满足条件的序列 xx,如果可能,请展示一个满足条件的序列。

约束条件

  • 1leqNleq1001 \\leq N \\leq 100
  • 2leqA1<A2cdots<ANleq10182 \\leq A_1 < A_2 \\cdots < A_N \\leq 10^{18}
  • 输入中的所有值都是整数。

输入

从标准输入读入数据,格式如下:

NN

A1A_1 A2A_2 cdots\\cdots ANA_N

输出

如果可以形成满足条件的序列 xx,请按照以下格式打印答案:

Yes x1x_1 x2x_2 cdots\\cdots xNx_N

如果不可能形成满足条件的序列,打印 No


示例输入 1

3
3 4 6

示例输出 1

Yes
3 6 4

对于 x=(3,6,4)x=(3,6,4),我们有:

  • y1=operatornameLCM(3)=3y_1=\\operatorname{LCM}(3)=3
  • y2=operatornameLCM(3,6)=6y_2=\\operatorname{LCM}(3,6)=6
  • y3=operatornameLCM(3,6,4)=12y_3=\\operatorname{LCM}(3,6,4)=12

其中,y1<y2<y3y_1<y_2<y_3


示例输入 2

3
2 3 6

示例输出 2

No

无法通过 AA 的任何排列满足条件。


示例输入 3

10
922513 346046618969 3247317977078471 4638516664311857 18332844097865861 81706734998806133 116282391418772039 134115264093375553 156087536381939527 255595307440611247

示例输出 3

Yes
922513 346046618969 116282391418772039 81706734998806133 255595307440611247 156087536381939527 134115264093375553 18332844097865861 3247317977078471 4638516664311857