AT_agc031_c [AGC031C] Differ by 1 Bit
Description
[problemUrl]: https://atcoder.jp/contests/agc031/tasks/agc031_c
整数 $ N,\ A,\ B $ が与えられます。 $ (0,\ 1,\ ...\ 2^N-1) $ の順列 $ (P_0,\ P_1,\ ...\ P_{2^N-1}) $ であって、 次の条件をすべて満たすものが存在するかどうか判定してください。 また、存在するなら $ 1 $ つ構成してください。
- $ P_0=A $
- $ P_{2^N-1}=B $
- すべての $ 0\ \leq\ i\
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ A $ $ B $
Output Format
条件を満たす順列が存在しないならば `NO` と出力せよ。
存在するならば、まず $ 1 $ 行目に `YES` と出力せよ。 そして $ 2 $ 行目に $ (P_0,\ P_1,\ ...\ P_{2^N-1}) $ を空白区切りで出力せよ。 なお、解が複数個存在する場合はどれを出力してもよい。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 17 $
- $ 0\ \leq\ A\ \leq\ 2^N-1 $
- $ 0\ \leq\ B\ \leq\ 2^N-1 $
- $ A\ \neq\ B $
- 入力される値はすべて整数である。
### Sample Explanation 1
$ P=(1,0,2,3) $ を $ 2 $ 進数表記すると $ (01,00,10,11) $ となり、どの隣り合う $ 2 $ 要素もちょうど $ 1 $ 桁だけ異なります。