Vlad and a Pair of Numbers (Codeforces 1790E)
Tags: Others, bitmasks

Vlad found two positive numbers $$$a$$$ and $$$b$$$ ($$$a,b>0$$$). He discovered that $$$a \oplus b = \frac{a + b}{2}$$$, where $$$\oplus$$$ means the bitwise exclusive OR , and division is performed without rounding..Since it is easier to remember one number than two, Vlad remembered only $$$a\oplus b$$$, let's denote this number as $$$x$$$. Help him find any suitable $$$a$$$ and $$$b$$$ or tell him that they do not exist.

Input: The first line of the input data contains the single integer $$$t$$$ ($$$1 \le t \le 10^4$$$) — the number of test cases in the test. Each test case is described by a single integer $$$x$$$ ($$$1 \le x \le 2^{29}$$$) — the number that Vlad remembered.

Output: Output $$$t$$$ lines, each of which is the answer to the corresponding test case. As the answer, output $$$a$$$ and $$$b$$$ ($$$0 < a,b \le 2^{32}$$$), such that $$$x = a \oplus b = \frac{a + b}{2}$$$. If there are several answers, output any of them. If there are no matching pairs, output -1.


Sample Inputs:
6
2
5
10
6
18
36

Sample Outputs:
3 1
-1
13 7
-1
25 11
50 22

Solution (Python):
from sys import stdin
input = lambda : stdin.readline()[:-1]
for _ in range(int(input())):
    x = int(input())
    b = x / 2
    a = 3 * x / 2
    if a % 1 == 0 and b % 1 == 0:
        if int(a) ^ int(b) == x:
            print(int(a), end=' ')
            print(int(b))
        else:
            print(-1)
    else:
        print(-1)

Solution (Python):
for m in [*map(int, open(0))][1:]:
    b = m >> 1
    print(*[b * 3, -1, b][bool(m & 1 or m & b)::2])

Solution (Python):
t = int(input())
r = []
for _ in range(t):
    x = int(input())
    if x % 2 == 1:
        r.append(-1)
    elif x // 2 & x != 0:
        r.append(-1)
    else:
        r.append(sorted([x // 2, x // 2 + x], reverse=True))
for i in r:
    if i == -1:
        print(-1)
    else:
        print(*i)