Codeforces Round 778 (Div. 1 + Div. 2, based on Technocup 2022 Final Round)
C
Alice and the Cake
Codeforces
1400
原题
← BD →
翻译中…

Alice has a cake, and she is going to cut it. She will perform the following operation $n-1$ times: choose a piece of the cake (initially, the cake is all one piece) with weight $w\ge 2$ and cut it into two smaller pieces of weight $\lfloor\frac{w}{2}\rfloor$ and $\lceil\frac{w}{2}\rceil$ ($\lfloor x \rfloor$ and $\lceil x \rceil$ denote floor and ceiling functions, respectively).

翻译中…

After cutting the cake in $n$ pieces, she will line up these $n$ pieces on a table in an arbitrary order. Let $a_i$ be the weight of the $i$-th piece in the line.

翻译中…

You are given the array $a$. Determine whether there exists an initial weight and sequence of operations which results in $a$.

翻译中…

Input

翻译中…

The first line contains a single integer $t$ ($1 \le t \le 10^4$) — the number of test cases.

翻译中…

The first line of each test case contains a single integer $n$ ($1 \le n \le 2 \cdot 10^5$).

翻译中…

The second line of each test case contains $n$ integers $a_1, a_2, \ldots, a_n$ ($1 \le a_i \le 10^9$).

翻译中…

It is guaranteed that the sum of $n$ for all test cases does not exceed $2 \cdot 10^5$.

翻译中…

Output

翻译中…

For each test case, print a single line: print YES if the array $a$ could have resulted from Alice's operations, otherwise print NO.

翻译中…

You may print each letter in any case (for example, YES, Yes, yes, yEs will all be recognized as positive answer).

翻译中…

Note

翻译中…

In the first test case, it's possible to get the array $a$ by performing $0$ operations on a cake with weight $327$.

翻译中…

In the second test case, it's not possible to get the array $a$.

翻译中…

In the third test case, it's possible to get the array $a$ by performing $1$ operation on a cake with weight $1\,970\,429\,473$:

翻译中…
  • Cut it in half, so that the weights are $[985\,214\,736, 985\,214\,737]$.
翻译中…

Note that the starting weight can be greater than $10^9$.

翻译中…

In the fourth test case, it's possible to get the array $a$ by performing $2$ operations on a cake with weight $6$:

翻译中…
  • Cut it in half, so that the weights are $[3,3]$.
  • Cut one of the two pieces with weight $3$, so that the new weights are $[1, 2, 3]$ which is equivalent to $[2, 3, 1]$ up to reordering.
翻译中…

样例

Input #1
14
1
327
2
869 541
2
985214736 985214737
3
2 3 1
3
2 3 3
6
1 1 1 1 1 1
6
100 100 100 100 100 100
8
100 100 100 100 100 100 100 100
8
2 16 1 8 64 1 4 32
10
1 2 4 7 1 1 1 1 7 2
10
7 1 1 1 3 1 3 3 2 3
10
1 4 4 1 1 1 3 3 3 1
10
2 3 2 2 1 2 2 2 2 2
4
999999999 999999999 999999999 999999999
Output #1
YES
NO
YES
YES
NO
YES
NO
YES
YES
YES
YES
NO
NO
YES
InputCopy OutputCopy
题目信息
题号
1654C
时间限制
2 s
内存限制
256 MB
标签
数据结构
贪心
模拟
排序

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。