#include #include #include #include #include #include using namespace std; #define ll long long vector primes; ll maxVal = 1000000000000; ll maxn = 1000000; void sieve() { vector vis(maxn + 1); for (ll i = 2; i <= maxn; i++) { if (vis[i] == 0) { vis[i] = 1; primes.push_back(i); } for (ll j = i * i; j <= maxn; j += i) { vis[j] = 1; } } } ll func(ll n) { vector validPrimes; ll ncopy = n; for (int i = 0; i < primes.size(); i++) { if (ncopy % primes[i] == 0) { validPrimes.push_back(primes[i]); while (ncopy % primes[i] == 0) { ncopy /= primes[i]; } } } if (ncopy != 1) { validPrimes.push_back(ncopy); } ll mul = 1; ll tot = 0; for (int i = validPrimes.size() - 1; i >= 0; i--) { ll prime = validPrimes[i]; //cout<<"Trying: "<> n; vector a(n); ll maxVal = -1; for (int i = 0; i < n; i++) { cin >> a[i]; maxVal = max(maxVal, a[i]); } sieve(); ll count = 0; for (int i = 0; i < n; i++) { //cout<