#include <bits/stdc++.h>
using namespace std;
enum CarryState { FORCE_CARRY, CAN_CARRY, NO_CARRY };
unsigned long long count_solutions(unsigned long long s, unsigned long long x) {
  CarryState state = NO_CARRY;
  unsigned long long total = 1;
  for (size_t i = 0; i < 64; i++) {
    unsigned int s_bit = (s >> i) & 1;
    unsigned int x_bit = (x >> i) & 1;
    if (s_bit == 1 && x_bit == 1) {
      if (state == FORCE_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = NO_CARRY;
    } else if (s_bit == 0 && x_bit == 0) {
      if (state == FORCE_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = CAN_CARRY;
    } else if (s_bit == 1 && x_bit == 0) {
      if (state == NO_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = CAN_CARRY;
    } else {
      if (state == NO_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = FORCE_CARRY;
    }
  }
  if (state == CAN_CARRY) total /= 2;
  if (state == FORCE_CARRY) return 0;
  if (s == x) total -= 2;
  return total;
}
int main(int argc, char* argv[]) {
  unsigned long long s, x;
  ios_base::sync_with_stdio(false);
  cin >> s;
  cin >> x;
  cout << count_solutions(s, x) << endl;
  return 0;
}

### Prompt

Please create a solution in cpp to the following problem:

Two positive integers a and b have a sum of s and a bitwise XOR of x. How many possible values are there for the ordered pair (a, b)?

Input

The first line of the input contains two integers s and x (2 ≤ s ≤ 1012, 0 ≤ x ≤ 1012), the sum and bitwise xor of the pair of positive integers, respectively.

Output

Print a single integer, the number of solutions to the given conditions. If no solutions exist, print 0.

Examples

Input

9 5


Output

4


Input

3 3


Output

2


Input

5 2


Output

0

Note

In the first sample, we have the following solutions: (2, 7), (3, 6), (6, 3), (7, 2).

In the second sample, the only solutions are (1, 2) and (2, 1).

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
enum CarryState { FORCE_CARRY, CAN_CARRY, NO_CARRY };
unsigned long long count_solutions(unsigned long long s, unsigned long long x) {
  CarryState state = NO_CARRY;
  unsigned long long total = 1;
  for (size_t i = 0; i < 64; i++) {
    unsigned int s_bit = (s >> i) & 1;
    unsigned int x_bit = (x >> i) & 1;
    if (s_bit == 1 && x_bit == 1) {
      if (state == FORCE_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = NO_CARRY;
    } else if (s_bit == 0 && x_bit == 0) {
      if (state == FORCE_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = CAN_CARRY;
    } else if (s_bit == 1 && x_bit == 0) {
      if (state == NO_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = CAN_CARRY;
    } else {
      if (state == NO_CARRY)
        return 0;
      else if (state != CAN_CARRY)
        total *= 2;
      state = FORCE_CARRY;
    }
  }
  if (state == CAN_CARRY) total /= 2;
  if (state == FORCE_CARRY) return 0;
  if (s == x) total -= 2;
  return total;
}
int main(int argc, char* argv[]) {
  unsigned long long s, x;
  ios_base::sync_with_stdio(false);
  cin >> s;
  cin >> x;
  cout << count_solutions(s, x) << endl;
  return 0;
}

```