## https://yukicoder.me/problems/no/3102 import math def to_2(N): array = [] while N > 0: array.append(N % 2) N //= 2 array.reverse() return array def to_2x(N, k): array = [] for _ in range(k + 1): array.append(N % 2) N //= 2 array.reverse() return array def sqrt(n): low = 0 high = 2 * int(math.sqrt(n)) while high - low > 1: mid = (high + low) // 2 if mid ** 2 <= n: low = mid else: high = mid if high ** 2 <= n: return high else: return low def solve(N): array = to_2(N) n = len(array) if n >= 2: n2 = n // 2 n_base = 0 for i in range(n2): n_base += (1 << (n - 1 - i)) * array[i] low = sqrt(n_base) high = sqrt(n_base + (1 << (n - 1 - (n2 - 1))) - 1) for sqrt_k in range(low, high + 1): k = N ^ sqrt_k if sqrt(k) == sqrt_k: return k return -1 else: if N == 1: return - 1 else: # N == 0: return 0 def solve2(N): array = to_2(N) for bit in range(2 ** len(array)): bit1 = sqrt(bit) if bit1 ^ bit == N: return bit return -1 def main(): T = int(input()) answers = [] for _ in range(T): N = int(input()) ans = solve(N) answers.append(ans) for ans in answers: print(ans) if __name__ == "__main__": main()