# 入力 k, x = map(int, input().split()) # 場合分け if x == 0: print("Yes") print(1) print(k ^ 1) exit() # 空である部分列もカウントする、とします if k == 0: x += 1 # log{2}X logx = x.bit_length() - 1 # Xが2冪ではないならNo # x&-x でxの最下位bitを求められます(BITなどにも用いられるテクニックです) if x&-x != x: print("No") exit() ans = [] point = 0 for i in range(1, 2**20): ans.append(i) # ansに加えたiが2冪ではないならpointを+1 # point=log{2}Xになったらbreak if i&-i != i: point += 1 if point == logx: break # ansの要素でKが作れないのならKを加えます if 2**(max(ans).bit_length()) < k: ans.append(k) # 出力 print("Yes") print(len(ans)) print(*ans)