/*{{{*/ //#define HOME #include using namespace std; template void _R(T &x) { cin >> x; } void _R(int &x) { scanf("%d", &x); } void _R(int64_t &x) { scanf("%lld", &x); } void _R(double &x) { scanf("%lf", &x); } void _R(char &x) { scanf(" %c", &x); } void _R(char *x) { scanf("%s", x); } void R() {} template void R(T &head, U &... tail) { _R(head); R(tail...); } template void _W(const T &x) { cout << x; } void _W(const int &x) { printf("%d", x); } void _W(const int64_t &x) { printf("%lld", x); } void _W(const double &x) { printf("%.16f", x); } void _W(const char &x) { putchar(x); } void _W(const char *x) { printf("%s", x); } template void _W(const pair &x) {_W(x.F); putchar(' '); _W(x.S);} template void _W(const vector &x) { for (auto i = x.begin(); i != x.end(); _W(*i++)) if (i != x.cbegin()) putchar(' '); } void W() {} template void W(const T &head, const U &... tail) { _W(head); putchar(sizeof...(tail) ? ' ' : '\n'); W(tail...); } template void DB(const T &head, const U &... tail) { #ifdef HOME _W('#'); _W(head); putchar(sizeof...(tail) ? ' ' : '\n'); W(tail...); #endif } #define REP(i,a,b) for (int i = (a); i <= (b); ++i) #define REPD(i,a,b) for (int i = (a); i >= (b); --i) #define FORI(i,n) REP(i,1,n) #define FOR(i,n) REP(i,0,int(n)-1) #define ITER(i,t) for (auto i = t.begin(); i != t.end(); ++i) #define MP make_pair #define PB push_back #define EP emplace_back #define F first #define S second #define SZ(x) int((x).size()) #define ALL(x) (x).begin(), (x).end() #define UNIQUE(x) {sort(ALL(x)); (x).erase(unique(ALL(x)), (x).end());} #define MS0(X) memset((X), 0, sizeof((X))) #define MS1(X) memset((X), -1, sizeof((X))) #define MS(X, v) memset((X), (v), sizeof((X))) //#define DB(v) cerr << #v << " = " << (v) << endl; typedef pair pii; typedef vector vi; typedef int64_t ll; /*}}}*/ const int N = 100+10; const int RAN = 1000000+10; int n; bool isp[RAN], nxp[RAN]; ll a[N]; ll f(ll k){ /* f(k) = max(1+p*f(k/p)), for p|k f(1) = 0 f(p) = 1 f(p^2) = 1+p f(p^3) = 1+p+p^2 f(p^k) = (p^k-1)/(p-1) = g(p, k) f(pq) = max(1+p, 1+q) = 1+p (p>q) f(p^2q) = max(1+p(1+p), 1+q(1+p)) = 1+p+p^2 f(pq^2) = max(1+p(1+q), 1+q(1+p)) = 1+p+pq f(pq^3) = max(1+p(1+q+qq), 1+q(1+p+pq)) = 1+p+pq+pqq f(p^2q^2) = max(1+p(1+p+pq), 1+q(1+p+p^2)) = 1+p+p^2+p^2q f(pqr) = max(1+p(1+qf(r)), 1+q(1+p(f(r)))) = max(1+p+pqf(r), 1+q+pqf(r)) = 1+max(p,q)+pqf(r) */ ll r = 1; DB(""); for(int i=2; i