#agc031c. [agc031_c]Differ by 1 Bit

[agc031_c]Differ by 1 Bit

Problem Statement

You are given integers N,AN,\\ A and BB. Determine if there exists a permutation (P0,P1,...P2N1)(P_0,\\ P_1,\\ ...\\ P_{2^N-1}) of (0,1,...2N1)(0,\\ 1,\\ ...\\ 2^N-1) that satisfies all of the following conditions, and create one such permutation if it exists.

  • P0=AP_0=A
  • P2N1=BP_{2^N-1}=B
  • For all 0leqi<2N10 \\leq i < 2^N-1, the binary representations of PiP_i and Pi+1P_{i+1} differ by exactly one bit.

Constraints

  • 1leqNleq171 \\leq N \\leq 17
  • 0leqAleq2N10 \\leq A \\leq 2^N-1
  • 0leqBleq2N10 \\leq B \\leq 2^N-1
  • AneqBA \\neq B
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

NN AA BB

Output

If there is no permutation that satisfies the conditions, print NO.

If there is such a permutation, print YES in the first line. Then, print (P0,P1,...P2N1)(P_0,\\ P_1,\\ ...\\ P_{2^N-1}) in the second line, with spaces in between. If there are multiple solutions, any of them is accepted.


Sample Input 1

2 1 3

Sample Output 1

YES
1 0 2 3

The binary representation of P=(1,0,2,3)P=(1,0,2,3) is (01,00,10,11)(01,00,10,11), where any two adjacent elements differ by exactly one bit.


Sample Input 2

3 2 1

Sample Output 2

NO