#include using namespace std; using namespace chrono; #if __has_include() #include using namespace atcoder; #endif int main() { int64_t T; cin >> T; vector is_prime(10000010, true); is_prime[0] = false; is_prime[1] = false; for (int64_t i = 2; i <= 10000009; i++) { if (is_prime[i]) { for (int64_t j = 2 * i; j <= 10000009; j += i) { is_prime[j] = false; } } } vector ls; for (int64_t i = 3; i <= 10000000; i += 2) { if (is_prime[i] && is_prime[i + 2]) { ls.push_back(i); } } for (int64_t t = 0; t < T; t++) { int64_t n; cin >> n; int64_t p = (-2 + sqrtl(4 + 4 * n)) / 2; auto itr = ranges::upper_bound(ls, p); if (itr == ls.begin()) { cout << -1 << endl; continue; } itr--; cout << (*itr * (*itr + 2)) << endl; } return 0; }