/*
원래 문제 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를 없애고 내림차순으로 추가하면 최소가 될까? 안되겠지?