import java.util.*;

public class testing {

	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		long X = scn.nextLong();
		long S = scn.nextLong();
		if (S == X) {
			System.out.println(((S == 0) ? "0" : "1" + "\n" + S));
			return;
		}
		else if(X>S){
			System.out.println(-1);
			return;
		}
		else if(S%2!=X%2){
			System.out.println(-1);
			return;
		}
		boolean twos = true;
		long A = (S - X) / 2;
		long a = 0, b = 0;
		final int LONG_FIELD_SIZE = 8;

		// Traverse through all bits
		for (int i = 0; i < 8 * LONG_FIELD_SIZE; i++) {
			long Xi = (X & (1 << i));
			long Ai = (A & (1 << i));
			if (Xi == 0 && Ai == 0) {
				// Let us leave bits as 0.
			} else if (Xi == 0 && Ai > 0) {
				a = ((1 << i) | a);
				b = ((1 << i) | b);
			} else if (Xi > 0 && Ai == 0) {
				a = ((1 << i) | a);

				// We leave i-th bit of b as 0.
			} else if (Xi == 1 && Ai == 1) {

				twos = false;
				break;

			}
		}
		if(twos){
			System.out.println(2);
			System.out.println(a+" "+b);
			return;
		}
		else{
		    if(S%2==X%2){
		    	System.out.println(3);
		    	System.out.println(X+" "+(S-X)/2+" "+(S-X)/2);
		    	return;
		    }
		  
		}
	}
}