#include <bits/stdc++.h>   using namespace std;   int brute(int s, int x) {     int ans = 0;     for (int i = 1; i <= s; ++i)       for (int j = 1; j <= s; ++j)         if (i + j == s && (i ^ j) == x) ++ans;     return ans;   }   long long ways0(long long s, long long x) {     if (s == x) return 2;     return 0;   }   long long solve(long long s, long long x) {     long long dp[60][2] = {};     if (s % 2 != x % 2) {       return 0;     }     if (x & (1LL << 0)) {       dp[0][0] = 2;     } else {       dp[0][0] = 1;       dp[0][1] = 1;     }     for (int i = 1; i < 60; ++i) {       if (x & (1LL << i)) {         if (s & (1LL << i)) {           dp[i][0] += 2 * dp[i - 1][0];         } else {           dp[i][1] += 2 * dp[i - 1][1];         }       } else {         if (s & (1LL << i)) {           dp[i][0] += dp[i - 1][1];           dp[i][1] += dp[i - 1][1];         } else {           dp[i][0] += dp[i - 1][0];           dp[i][1] += dp[i - 1][0];         }       }     }     return dp[59][0] - ways0(s, x);   }   int main() {     long long s, x;     cin >> s >> x;     cout << solve(s, x) <<   n ;   }   