#abc140f. [abc140_f]Many Slimes

[abc140_f]Many Slimes

题目描述

我们有一个史莱姆。

你可以将这个史莱姆的"健康值"设置为你选择的任意整数。

每秒钟,史莱姆都会通过生成一个健康值更低的另一个史莱姆来繁殖。你可以自由选择每个新史莱姆的健康值。我们的史莱姆的第一次繁殖将在一秒钟后发生。

确定是否可能设置我们第一个史莱姆和随后生成的史莱姆的健康值,使得存在于NN秒里的2N2^N个史莱姆的健康值的多重集合等于一个多重集合SS

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

约束条件

  • 输入中的所有值都是整数。
  • 1leNle181 \\le N \\le 18
  • 1leSile1091 \\le S_i \\le 10^9

输入格式

输入以以下格式从标准输入给出:

NN S1S_1 S2S_2 ldots\\ldots S2NS_{2^N}

输出格式

如果可能设置第一个史莱姆和随后生成的史莱姆的健康值,使得存在于NN秒内的2N2^N个史莱姆的健康值的多重集合等于SS,则输出Yes;否则输出No

示例输入1

2
4 2 3 1

示例输出1

Yes

我们将展示一种使得在22秒内存在的史莱姆的健康值的多重集合等于SS的方法。

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

通过让第一个史莱姆生成一个健康值为33的史莱姆,存在于11秒内的史莱姆的健康值可以为4, 34,~3

然后,通过让第一个史莱姆生成一个健康值为22的史莱姆,让第二个史莱姆生成一个健康值为11的史莱姆,存在于22秒内的史莱姆的健康值可以为4, 3, 2, 14,~3,~2,~1,这与SS作为多重集合相等。

示例输入2

2
1 2 3 1

示例输出2

Yes

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

示例输入3

1
1 1

示例输出3

No

示例输入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