Get The Sequence
题号:NC313113
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有一个长度为 n 的序列 a_1,a_2,\dots,a_n,和一个长度为 m 的序列 b_1,b_2,\dots,b_m,每个元素都是正整数。

\hspace{15pt}小苯可以对序列 a 进行任意轮操作(也可以不进行),每一轮从以下两种操作中任选一个进行:
\hspace{23pt}\bullet\,删除 a 中的任意一个元素(删除后序列长度减少 1,后续元素前移)。
\hspace{23pt}\bullet\,选择 a 中的一个元素 a_i,将其减少 1(如果它大于 1)。
\hspace{15pt}你的任务就是判断是否可能通过若干次操作,将序列 a 变成序列 b

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入两个整数 n, m\left(1 \leqq m \leqq n \leqq 2 \times 10^5\right),表示序列 ab 的长度。
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n\left(1 \leqq a_i \leqq 10^9\right),表示序列 a 的元素。
\hspace{15pt}第三行输入 m 个整数 b_1, b_2, \dots, b_m\left(1 \leqq b_i \leqq 10^9\right),表示序列 b 的元素。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。如果可能将 a 变成 b,输出一行 \texttt{YES},否则输出一行 \texttt{NO}
示例1

输入

复制
3
4 3
5 4 3 3
4 3 2
5 3
100 50 30 20 10
50 20 50
4 2
8 4 2 1
4 2

输出

复制
YES
NO
YES

说明

\hspace{15pt}对于第一组测试数据:
\hspace{23pt}\bullet\,a_43 减到 2
\hspace{23pt}\bullet\,删除 a_1 = 5

\hspace{15pt}对于第二组测试数据,我们可以证明,无法通过删除和减 1 使 a 变成 b