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.
from math import *
# from sys import stdin,stdout

def binarySearch(arr,x,i):
	l=i
	r=len(arr)-1 
	while l <= r: 
		mid = (l + r)//2; 
		if arr[mid] == x: 
			return mid 
		elif arr[mid] < x: 
			l = mid + 1
		else: 
			r = mid - 1
	return -1

def js(arr,x):
	l=0
	r=len(arr)-1
	ans=-1
	while(l<=r):
		m=(l+r)//2
		if(arr[m]<=x):
			ans=m
			l=m+1
		else:
			r=m-1
	return ans

def jg(arr,x,i):
	l=i
	r=len(arr)-1
	ans=-1
	while(l<=r):
		m=(l+r)//2
		if(arr[m]>=x):
			ans=m
			r=m-1
		else:
			l=m+1
	return ans

# def ceil(a,b):
# 	if a%b == 0:
# 		return int(a/b)
# 	else:
# 		return (a//b + 1)

def c(s,x):
	A=(s-x)//2
	a=0
	b=0

	for i in range(64):
		xi=(x&(1<<i))
		ai=(A&(1<<i))
		if(xi==0 and ai==0):
			pass
		elif(xi==0 and ai>0):
			a=((1<<i)|a)
			b=((1<<i)|b)
		elif(xi>0 and ai==0):
			a=((1<<i)|a)
		else:
			return None
	return a,b



u,v=map(int,input().split())
if(u>v or (v-u)%2):
	print(-1)
elif(u==v==0):
	print(0)
elif(u==v):
	print(1)
	print(v)
else:
	if(c(v,u)!=None):
		a,b=c(v,u)
		print(2)
		print(a,b)
	else:
		print(3)
		print(u,(v-u)//2,(v-u)//2)