#ABC140F. Many Slimes

Many Slimes

题目描述

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,~S_2,~...,~S_{2^N}.

我们有一种粘液。

你可以将这只粘液的_health_设置为任意整数值。

一只粘液每秒都会繁殖出一只健康值更低的粘液。您可以自由选择每个新粘液的健康值。我们的粘液将在一秒后进行第一次繁殖。

请判断是否有可能设置第一个史莱姆的健康值和随后产生的史莱姆的健康值,使 2N2^N 个史莱姆在 NN 秒内的健康值的多集等于 SS 个多集。

这里的 SS 是一个多集合,包含 2N2^N 个整数(可能重复): S1, S2, ..., S2NS_1,~S_2,~...,~S_{2^N}

输入格式

输入内容按以下格式标准输入:

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

输出格式

如果可以设置第一个史莱姆和随后产生的史莱姆的健康值,使得在 NN 秒内存在的 2N2^N 个史莱姆的健康值的多集等于 SS ,则打印 "是";否则打印 "否"。

样例 #1

样例输入 #1

2
4 2 3 1

样例输出 #1

Yes

样例 #2

样例输入 #2

2
1 2 3 1

样例输出 #2

Yes

样例 #3

样例输入 #3

1
1 1

样例输出 #3

No

样例 #4

样例输入 #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

样例输出 #4

No

说明

数据规模与约定

  • 所有输入值均为整数。
  • 1N181 \leq N \leq 18
  • 1Si1091 \leq S_i \leq 10^9

样例 11 解释

我们将展示一种方法,让 22 秒内存在的史莱姆健康状况的多集等于 SS

首先,将第一个史莱姆的健康值设置为 44

让第一只粘液产生一只健康值为 33 的粘液,这样 11 秒内存在的粘液的健康值就可以达到 4, 34,~3

然后,让第一只粘液产生一只健康值为 22 的粘液,再让第二只粘液产生一只健康值为 11 的粘液,那么在 22 秒内存在的粘液的健康值可以是 4, 3, 2, 14,~3,~2,~1 ,等于多集的 SS

样例 22 解释

SS 可能包含多个相同整数的实例。