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.*;

public class Solution {

	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		StringBuffer out = new StringBuffer();

        long u = in.nextLong(),
             v = in.nextLong();

        if(u>v) {
            System.out.println(-1);
            return;
        }

        long freq[] = new long[64];

        for(int i=60; i>=0; i--) {

            long pow2 = 1L<<i;

            int bit = (u&pow2)==0?0:1;

            if(bit==1)
                u-=pow2;

            freq[i] = v/pow2;

            if(freq[i]==0)
                continue;

            if(freq[i]%2!=bit || freq[i]*pow2+u>v)
                freq[i]-=1;

            if(freq[i]%2!=bit)
                freq[i]-=1;

            freq[i]=Math.max(0, freq[i]);

            v-=pow2*freq[i];
        }

        if(v!=0) {
            System.out.println(-1);
            return;
        }

        int cnt = 0;
        while(true) {

            long val = 0;
            for(int i=0; i<=60; i++)
                if(freq[i]!=0) {
                    val+=(1L<<i);
                    freq[i]-=1;
                }

            if(val==0)
                break;

            cnt+=1;
            out.append(val+" ");
        }

        System.out.println(cnt+"\n"+out);
    }

	public static int modInverse(int a, int m) 
    { 
        int m0 = m; 
        int y = 0, x = 1; 
  
        if (m == 1) 
            return 0; 
  
        while (a > 1) 
        { 
            int q = a / m; 
  
            int t = m; 
            m = a % m; 
            a = t; 
            t = y; 
  
            y = x - q * y; 
            x = t; 
        } 
        if (x < 0) 
            x += m0; 
  
        return x; 
    }
}