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 collections import defaultdict as dc
from collections import deque as dq
from bisect import bisect_left,bisect_right,insort_left
import sys
import math
#define of c++ as inl=input()
mod=10**9 +7
def rem(p,q):
	z=p//q
	r=p-q*z
	return r
def inp():
    p=int(input()) 
    return p
def line():
    p=list(map(int,input().split()))
    return p
def count(n):
	if n<=0:
		return 0
	return (n*(n+1))//2
def count(n):
	p=bin(n)[2:]
	return p.count('1')
def ans(x,s):
	p=bin(x)[2:]
	q=bin(s)[2:]
	if len(p)>len(q):
		q='0'*(len(p)-len(q))+q
	else:
		p='0'*(len(q)-len(p))+p
	ans1=''
	ans2=''
	for i in range(len(p)):
		if p[i]=='0' and q[i]=='0':
			ans1+='0'
			ans2+='0'
		elif p[i]=='0' and q[i]=='1':
			ans1+='1'
			ans2+='1'
		elif p[i]=='1' and q[i]=='0':
			ans1+='0'
			ans2+='1'
		else:
			return -1,-1
	#print(ans1,ans2)
	return int(ans1,2),int(ans2,2)
xor,s=line()
if xor>s:
	print(-1)
elif s==0:
	print(0)
elif s==xor:
	print(1)
	print(s)
else:
	x=s-xor
	x=x//2
	a,b=ans(xor,x)
	if a==-1:
		if xor+x+x==s:
			print(3)
			print(xor,x,x)
		else:
			print(-1)
	else:
		if a+b==s and a^b==xor:
			print(2)
			print(a,b)
		else:
			print(-1)