#include <bits/stdc++.h>
long long ans, a, b, i;
std::map<long long, long long> D;
long long f(long long x, long long y) {
  if (x == 0 && y == 0) return 1;
  if (x == 0) return 0;
  if (y % 2 == 1) {
    if (x % 2 == 1)
      return 2 * f(x / 2, y / 2);
    else
      return 0;
  }
  if (x % 2 == 1) return 0;
  long long sum = 0;
  sum += f(x / 2, y / 2);
  sum += f(x / 2 - 1, y / 2);
  return sum;
}
int main() {
  scanf("%I64d%I64d", &a, &b);
  ans = f(a, b);
  if (0 ^ a == b) ans -= 2;
  printf("%I64d", ans);
}
