开始: 2025-04-21 00:00:00

(24-25赛季)稠州常规赛20

结束: 2025-04-24 00:00:00
当前  2025-05-11 03:33:18  类型: IOI  状态: 已经结束 

P6. 新编程语言
描述

C正在学习使用一种简单的编程语言进行编程。她首先定义一个合法的程序,然后执行该程序以产生一些输出序列。

定义:

一个程序是一个非空的语句序列。

一个语句的形式或者是 "PRINT c",其中 c 是一个整数,或者是 "REP o",随后是一个程序,随后是 "END",其中 o 是一个不小于 1 的整数。

执行:

执行一个程序将依次执行其语句。

执行语句 "PRINT c" 将使 c 追加到输出序列中。

执行以 "REP o" 开始的语句将依次执行内部程序共 o 次。

Bessie 知道如何编写的一个程序示例如下。

```plain

REP 3

    PRINT 1

    REP 2

        PRINT 2

    END

END

```

该程序输出序列 [1,2,2,1,2,2,1,2,2]

C想要输出一个包含 N1 \le N \le 100)个正整数的序列。小Z 挑战她使用不超过 K1 \le K \le 3)个 "PRINT" 语句。注意,小C 可以使用任意数量的 "REP" 语句。同时注意,序列中的每个正整数都不超过 K

对于 T1 \le T \le 100)个独立的测试用例中的每一个,求小Z 是否可以编写一个程序,使用至多 K 个 "PRINT" 语句输出给定的序列。


输入

输入的第一行包含 T

每一个测试用例的第一行包含空格分隔的两个整数 NK

每一个测试用例的第二行包含一个由 N 个空格分隔的正整数组成的序列,每个数都不超过 K,为 Bessie 想要产生的序列。


输出

对于每一个测试用例输出一行,包含 "YES" 或 "NO"(大小写敏感)。

样例

输入

2
1 1
1
4 1
1 1 1 1

输出

YES
YES

输入

11
4 2
1 2 2 2
4 2
1 1 2 1
4 2
1 1 2 2
6 2
1 1 2 2 1 1
10 2
1 1 1 2 2 1 1 1 2 2
8 3
3 3 1 2 2 1 2 2
9 3
1 1 2 2 2 3 3 3 3
16 3
2 2 3 2 2 3 1 1 2 2 3 2 2 3 1 1
24 3
1 1 2 2 3 3 3 2 2 3 3 3 1 1 2 2 3 3 3 2 2 3 3 3
9 3
1 2 2 1 3 3 1 2 2
6 3
1 2 1 2 2 3

输出

YES
NO
YES
NO
YES
YES
YES
YES
YES
NO
NO
提示

样例 1 解释:


对于第二个测试用例,以下代码使用了 1 个 "PRINT" 语句输出了序列 [1,1,1,1]


```plain

REP 4

    PRINT 1

END

```


样例 2 解释:


对于第一个测试用例,以下代码使用了 2 个 "PRINT" 语句输出了序列 [1,2,2,2]


```plain

PRINT 1

REP 3

    PRINT 2

END

```


对于第二个测试用例,答案是 "NO",因为使用不超过 2 个 "PRINT" 语句输出序列 [1,1,2,1] 是不可能的。


对于第六个测试用例,以下代码使用了 3 个 "PRINT" 语句输出了序列 [3,3,1,2,2,1,2,2]


```plain

REP 2

    PRINT 3

END

REP 2

    PRINT 1

    REP 2

        PRINT 2

    END

END

```


- 测试点 3K=1

- 测试点 4\sim 7K \le 2

- 测试点 8\sim 13:没有额外限制。


提交

题目参数
时间限制 1 秒
内存限制 128 MB
提交