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 JAVA):

Solution:
import java.util.Scanner;
import java.util.Stack;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.HashMap;
import java.util.Comparator;
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class D{
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		long u = in.nextLong();
		long v = in.nextLong();
		long w = v - u;
		if(w < 0 || (w % 2 == 1)){
			System.out.println(-1);
			return;
		}
		if(u == 0 && v == 0){
			System.out.println(0);
			return;
		}
		if( w == 0) {
			System.out.println(1 + "\n" + u);
			return;
		}
		int[] bits = new int[70];
		int i = 0;
		while(w > 0){
			bits[i] = (int)(w & 1);
			w >>= 1;
			i++;
		}
		long x = 0;
		long pows2 = 1;
		for(int j = 0;j<=i;++j){
			if(bits[j+1] == 1){
				x = x + pows2;
			}
			pows2 *= 2;
		}
		if(((x + u) ^ x) == u){
			System.out.println(2 + "\n" + (x+u) + " " + x);
		}else{
			System.out.println(3 + "\n" + u + " " + x + " " + x);
		}
				
		
	}
}