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:
 
# seg=[0]*100005
 
 
# def build_query(ind,low,high):
# 	if low==high:
# 		seg[ind]=arr[low]
# 		return
 
# 	mid=low+(high-low)//2
# 	build_query(2*ind+1,low,mid) #left call
# 	build_query(2*ind+2,mid+1,high) #right call
# 	seg[ind]=min(seg[2*ind+1],seg[2*ind+2])
 
 
# def query(ind,low,high,l,r):
# 	#Completely overlap
# 	if low>=l and high<=r:
# 		return seg[ind]
 
# 	#No overlap
# 	if high<l or low>r:
# 		return 3636838
 
# 	#Partially overlap
# 	mid=low+(high-low)//2
# 	left=query(2*ind+1,low,mid,l,r)
# 	right=query(2*ind+2,mid+1,high,l,r)
# 	return min(left,right)
 
 
 
 
 
 
# # arr=[10,20,30,40,11,22,33,44,15,5]
# n,m=map(int,input().split())
# arr=list(map(int,input().split()))
# low=0
# high=len(arr)-1
# build_query(0,low,high)
# # m=1
# # print("Enter your l and r values ")
# while m:
# 	l,r=map(int,input().split())
# 	ans=query(0,0,high,l,r)
# 	print(ans)
 
# 	m-=1
 
# import math
 
# #Seive of erasthones
# MAX_VALUE=1000001
# seive=[0]*MAX_VALUE
 
# def seive_ers(seive):
 
# 	i=3
# 	while i<MAX_VALUE:
# 		seive[i]=1
# 		i+=2
 
 
# 	i=3
# 	while i<MAX_VALUE:
# 		if seive[i]==1:
# 			j=i*i
# 			while j<MAX_VALUE:
# 				seive[j]=0
# 				j+=i
# 		i+=2
 
# 	seive[2]=1
# 	seive[1]=0
# 	seive[0]=0
 


 
def solve():

	u,v=map(int,input().split())

	if u>v:
		print("-1")
		return
	if u%2!=v%2:
		print("-1")
		return
	if u==0 and v==0:
		print(0)
		return
	if u==v:
		print(1)
		print(u)
		return
	

	#lets solve for 3 
	x=(v-u)//2
	if(u&x):

		print(3)
		print(u,end=" ")
		print(x,end=" ")
		print(x)
		return
	print(2)
	print(u+x,end=" ")
	print(x)

















	
 
 
solve()
 
	
# t=int(input())
# # seive_ers(seive)
# while t:
# 	solve()
# 	t-=1
 
# # # # solve(