// Slow solution for problem C // Author: Adam Polak #include #include #include #include #include using namespace std; const int N = 100000; const int M = 1000000; bool sieve[M]; vector primes; int main() { ios_base::sync_with_stdio(0); for (int i=0; i> Z; while (Z--) { int n; cin >> n; long long best = n; map, int> prev, curr; for (int i=0; i> a; vector> factors; for (int i=0; i 1) factors.push_back(make_pair(a, 1)); prev = curr; curr.clear(); for (auto factor : factors) curr[factor] = 1 + prev[factor]; vector> spans; for (auto it : curr) spans.push_back(make_pair(it.second, it.first.first)); sort(spans.begin(), spans.end()); long long val = 1; for (int i=spans.size()-1; i>=0; --i) { val *= spans[i].second; best = max(best, val * spans[i].first); } } cout << best << endl; } return 0; }