Problem: Given 2 integers u and v, find the shortest array such that [bitwise-xor](https://en.wikipedia.org/wiki/Bitwise_operation#XOR) of its elements is u, and the sum of its elements is v.

Input

The only line contains 2 integers u and v (0 ≤ u,v ≤ 10^{18}).

Output

If there's no array that satisfies the condition, print "-1". Otherwise:

The first line should contain one integer, n, representing the length of the desired array. The next line should contain n positive integers, the array itself. If there are multiple possible answers, print any.

Examples

Input


2 4


Output


2
3 1

Input


1 3


Output


3
1 1 1

Input


8 5


Output


-1

Input


0 0


Output


0

Note

In the first sample, 3⊕ 1 = 2 and 3 + 1 = 4. There is no valid array of smaller length.

Notice that in the fourth sample the array is empty.

Solution (in PYTHON3):

Solution:
from sys import stdin
from bisect import bisect_left as bl
from bisect import bisect_right as br

def input():
    return stdin.readline()[:-1]


def intput():
    return int(input())


def sinput():
    return input().split()


def intsput():
    return map(int, sinput())


class RangedList:
    def __init__(self, start, stop, val=0):
        self.shift = 0 - start
        self.start = start
        self.stop = stop
        self.list = [val] * (stop - start)

    def __setitem__(self, key, value):
        self.list[key + self.shift] = value

    def __getitem__(self, key):
        return self.list[key + self.shift]

    def __repr__(self):
        return str(self.list)

    def __iter__(self):
        return iter(self.list)


def dprint(*args, **kwargs):
    if debugging:
        print(*args, **kwargs)

def conv(x):
    return int(''.join(str(k) for k in x), 2)

debugging = 1
# Code
xor, total = intsput()
xor = bin(xor)[2:]
xor = list(map(int, list('0' * (64 - len(xor)) + xor)))

rem = total

req = [0] * 64

for i in range(len(xor)):
    if xor[i]:
        fits = rem // 2 ** (63 - i)
        if not fits and xor[i]:
            print(-1)
            exit()
        if fits:
            if not xor[i]:  # make even
                fits -= fits % 2
            else:  # make odd
                fits += (fits % 2 - 1)
            req[i] += 1 if fits else 0
            rem -= (1 if fits else 0) * 2 ** (63 - i)

for i in range(len(xor)):
    fits = rem // 2 ** (63 - i)
    if fits:
        fits -= fits % 2
        req[i] += fits
        rem -= fits * 2 ** (63 - i)

if rem:
    print(-1)
    exit()

m = max(req)
print(m)

for _ in range(m):
    container = [0] * 64
    for i in range(len(req)):
        if req[i]:
            container[i] = 1
            req[i] -= 1
    print(conv(container), end=' ')
print()