import sys import math def factorize(x): factors = {} while x % 2 == 0: factors[2] = factors.get(2, 0) + 1 x = x // 2 i = 3 max_factor = math.sqrt(x) while i <= max_factor: while x % i == 0: factors[i] = factors.get(i, 0) + 1 x = x // i max_factor = math.sqrt(x) i += 2 if x > 1: factors[x] = 1 return factors def is_prime(n): if n < 2: return False for p in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]: if n % p == 0: return n == p max_div = int(math.sqrt(n)) + 1 for i in range(3, max_div, 2): if n % i == 0: return False return True def get_smallest_missing_prime(factors): candidate = 2 while True: if candidate not in factors: if is_prime(candidate): return candidate candidate += 1 def main(): input = sys.stdin.read().split() T = int(input[0]) cases = list(map(int, input[1:T+1])) for X in cases: if X == 0: print(0) continue if X == 1: print(2) continue factors = factorize(X) x_factors = factors.keys() p_min = get_smallest_missing_prime(x_factors) Y1 = X * p_min p_min_X = min(x_factors) a_min_X = factors[p_min_X] Y2 = X * (p_min_X ** (a_min_X + 1)) Y = min(Y1, Y2) print(Y) if __name__ == "__main__": main()