#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, x;
  cin >> n >> x;
  if (x == 0 && n == 2) {
    cout << "NO";
    return 0;
  }
  if (n % 4 == 0) {
    if (x > 3) {
      cout << "YES" << endl;
      cout << "1 2 3 " << x;
      n -= 4;
    } else {
      cout << "YES" << endl;
      if (x == 1) {
        cout << "2 4 6 1";
        n -= 4;
        x = 20;
      } else if (x == 2) {
        cout << "4 12 8 2";
        n -= 4;
        x = 20;
      } else if (x == 3) {
        cout << "4 12 8 3";
        n -= 4;
        x = 20;
      } else {
        cout << "1 2 3 0";
        x = 20;
        n -= 4;
      }
    }
  } else if (n % 4 == 1) {
    cout << "YES" << endl;
    cout << x;
    n--;
  } else if (n % 4 == 2) {
    cout << "YES" << endl;
    if (x != 0) {
      cout << "0 " << x;
      n -= 2;
    } else {
      n -= 6;
      cout << "0 1 3 4 8 14";
    }
  } else {
    cout << "YES" << endl;
    bitset<2000000> a(x);
    if (a.count() == 1) {
      if (x > 2) {
        cout << "1 3 " << x + 2;
        x = x + 3;
      } else if (x == 1) {
        cout << "2 6 5";
        x = 10;
      } else {
        cout << "1 3 0";
        x = x + 3;
      }
    } else if (a.count() == 2) {
      if (x > 3) {
        int q = 0;
        cout << "0 ";
        for (int i = 0; i < a.size(); ++i) {
          if (q > 0) break;
          if (a[i] == 1) {
            cout << int(pow(2.0, i)) << " ";
            ++q;
            a[i] = 0;
          }
        }
        cout << a.to_ullong();
        x = 2 * x;
      } else {
        cout << "0 1 2";
      }
    } else if (a.count() >= 3) {
      int q = 0;
      for (int i = 0; i < a.size(); ++i) {
        if (q > 1) break;
        if (a[i] == 1) {
          cout << int(pow(2.0, i)) << " ";
          ++q;
          a[i] = 0;
        }
      }
      cout << a.to_ullong();
    } else {
      cout << "2 7 5";
      x = 10;
    }
    n -= 3;
  }
  int k = x + 1;
  while (k % 4 != 0) ++k;
  for (int i = 0; i < n; ++i) {
    cout << " " << i + k;
  }
  return 0;
}
