atcoder#ABC140F. [ABC140F] Many Slimes

[ABC140F] Many Slimes

Score : 600600 points

Problem Statement

We have one slime.

You can set the health of this slime to any integer value of your choice.

A slime reproduces every second by spawning another slime that has strictly less health. You can freely choose the health of each new slime. The first reproduction of our slime will happen in one second.

Determine if it is possible to set the healths of our first slime and the subsequent slimes spawn so that the multiset of the healths of the 2N2^N slimes that will exist in NN seconds equals a multiset SS.

Here SS is a multiset containing 2N2^N (possibly duplicated) integers: S1,S2,...,S2NS_1, \sim S_2, \sim ..., \sim S_{2^N}.

Constraints

  • All values in input are integers.
  • 1N181 \leq N \leq 18
  • 1Si1091 \leq S_i \leq 10^9

Input

Input is given from Standard Input in the following format:

NN

S1S_1 S2S_2 ...... S2NS_{2^N}

Output

If it is possible to set the healths of the first slime and the subsequent slimes spawn so that the multiset of the healths of the 2N2^N slimes that will exist in NN seconds equals SS, print Yes; otherwise, print No.

2
4 2 3 1
Yes

We will show one way to make the multiset of the healths of the slimes that will exist in 22 seconds equal to SS.

First, set the health of the first slime to 44.

By letting the first slime spawn a slime whose health is 33, the healths of the slimes that exist in 11 second can be 4,34, \sim 3.

Then, by letting the first slime spawn a slime whose health is 22, and letting the second slime spawn a slime whose health is 11, the healths of the slimes that exist in 22 seconds can be 4,3,2,14, \sim 3, \sim 2, \sim 1, which is equal to SS as multisets.

2
1 2 3 1
Yes

SS may contain multiple instances of the same integer.

1
1 1
No
5
4 3 5 3 1 2 7 8 7 4 6 3 7 2 3 6 2 7 3 2 6 7 3 4 6 7 3 4 2 5 2 3
No