#include using namespace std; using namespace chrono; #if __has_include() #include using namespace atcoder; #endif template T gcd(T a, T b) { while (b) { T tmp = b; b = a % b; a = tmp; } return a; } template T pow_mod(T a, T n, T mod) { T r = 1; for (; n; n >>= 1) { if (n & 1) { (r *= a) %= mod; } (a *= a) %= mod; } return r; } template bool miller_rabin(T n) { if (n < 2) { return false; } for (T a : {2, 325, 9375, 28178, 450775, 9780504, 1795265022}) { if (gcd(a, n) != 1) { continue; } T m = n - 1; if (pow_mod(a, m, n) != 1) { return false; } for (m >>= 1; m % 2 == 0; m >>= 1) { T puni = pow_mod(a, m, n); if (puni == n - 1) { break; } if (puni != 1) { return false; } } T puni = pow_mod(a, m, n); if ((puni != n - 1) && (puni != 1)) { return false; } } return true; } int main() { int64_t T; cin >> T; vector is_prime(10000010, false); is_prime[2] = true; for (int64_t i = 3; i <= 10000009; i += 2) { is_prime[i] = miller_rabin(i); } 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; }