/*

원래 문제 https://codeforces.com/problemset/problem/959/D

조건 여러개를 잘못읽었음

 

모든 i에 대해

a[i]<=b[i] 이고

b[i]<=b[i+1] 이고

b is pairwise coprime 인

것들 중 사전순 최소

*/

 

#include "Core.h"

#include "FastIO.h"

#include "PrettyIO.h"

#include "PrettyDebug.h"

#include "NumberTheory.h"

 

signed main() {

CIN(int,n);

auto a=cinints(n);

auto p=primes(1500000);

cout<<sz(p)<<endl;

PQMin<pint> pq;

for(auto i:p)

pq.empl(i,i);

for(int i=0;i<n;i++){

while(pq.top().fi<a[i]){

auto z=pq.top();pq.pop();

z.fi*=z.se;

pq.empl(z);

}

cout<<pq.top().fi<<' ';

pq.pop();

}

cout<<endl;

}

 

 
 
https://codeforces.com/contest/1515/problem/C

이문제 쓸데없이 내림차순 정렬했는데, x를 없애고 내림차순으로 추가하면 최소가 될까? 안되겠지?