#include <bits/stdc++.h>   using namespace std;   char _;   const long long maxN = 200 * 1000 + 5;   const long long maxM = 5000 + 5;   const long long mod = 1000 * 1000 * 1000 + 7;   const long long base = 701;   const long long SQ = 500;   const long long maxL = 20;   int32_t main() {     ios::sync_with_stdio(0);     cin.tie(0);     long long s, x;     cin >> s >> x;     if (s < x) {       cout << 0 << endl;       return 0;     }     long long ans = 1;     for (long long i = 0; i < 40; i++)       if (x >> i & 1) ans *= 2;     long long carry = 0;     for (long long i = 40; i >= 0; i--) {       long long g = (s >> i & 1), f = (x >> i & 1);       if (carry == 0 && f == 0 && g == 0) continue;       if (carry == 0 && f == 0 && g == 1) {         carry = 1;         continue;       }       if (carry == 0 && f == 1 && g == 0) {         cout << 0 << endl;         return 0;       }       if (carry == 0 && f == 1 && g == 1) continue;       if (carry == 1 && f == 0 && g == 0) {         carry = 0;         continue;       }       if (carry == 1 && f == 0 && g == 1) continue;       if (carry == 1 && f == 1 && g == 0) continue;       if (carry == 1 && f == 1 && g == 1) {         cout << 0 << endl;         return 0;       }     }     if (s == x) ans -= 2;     if (carry)       cout << 0 << endl;     else       cout << ans << endl;     return 0;   }   