Many Slimes

AtCoder
IDabc140_f
Time2000ms
Memory256MB
Difficulty
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 $2^N$ slimes that will exist in $N$ seconds equals a multiset $S$. Here $S$ is a multiset containing $2^N$ (possibly duplicated) integers: $S_1,~S_2,~...,~S_{2^N}$. ## Constraints * All values in input are integers. * $1 \leq N \leq 18$ * $1 \leq S_i \leq 10^9$ ## Input Input is given from Standard Input in the following format: $N$ $S_1$ $S_2$ $...$ $S_{2^N}$ [samples]
Samples
Input #1
2
4 2 3 1
Output #1
Yes

We will show one way to make the multiset of the healths of the slimes that will exist in $2$ seconds equal to $S$.
First, set the health of the first slime to $4$.
By letting the first slime spawn a slime whose health is $3$, the healths of the slimes that exist in $1$ second can be $4,~3$.
Then, by letting the first slime spawn a slime whose health is $2$, and letting the second slime spawn a slime whose health is $1$, the healths of the slimes that exist in $2$ seconds can be $4,~3,~2,~1$, which is equal to $S$ as multisets.
Input #2
2
1 2 3 1
Output #2
Yes

$S$ may contain multiple instances of the same integer.
Input #3
1
1 1
Output #3
No
Input #4
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
Output #4
No
API Response (JSON)
{
  "problem": {
    "name": "Many Slimes",
    "description": {
      "content": "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 c",
      "description_type": "Markdown"
    },
    "platform": "AtCoder",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "abc140_f"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "We have one slime.\nYou can set the _health_ of this slime to any integer value of your choice.\nA slime reproduces every second by spawning another slime that has strictly less health. You can freely c...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments