[HNOI2009]双递增序
题号:NC20071
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

考虑一个长度为偶数n的序列a1,a2,,an,我们称这个序列为好的,当且仅当存在a1,a2,,an的一个划分U={ai1,ai2,…,ain/2},V={aj1,aj2,…,ajn/2}={a1,a2,…,an}−Ui1<i2<<in/2,ai1<ai2<<ain/2,j1<j2<<jn/2,aj1<aj2<<ajn/2 
比如序列3, 1, 4, 5, 8, 73,1,4,5,8,7就是一个好的序列。因为它可以分成U={3,4,8},V={1,5,7}。而序列3, 2, 1, 6, 5, 4则不是一个好的序列。
现在的问题是,针对给出的若干序列,请你判断它们是否是好的序列。

输入描述:

从文件input.txt中读入数据,文件的第一行仅包含一个整数m,表示需要判断m个序列。
接下来的m行分别给出这些序列。每个序列的输入为1行,每行的第1个数为一个偶数n,表示序列的长度,随后的n个整数表示序列本身的元素a1,a2,…,an。同一行的各数之间用一个空格隔开。

输出描述:

输出文件output.txt中一共有m行,如果第i个序列为好的序列,那么第i行输出Yes!,否则输出No!。
示例1

输入

复制
2
6 3 1 4 5 8 7
6 3 2 1 6 5 4

输出

复制
Yes!
No!

备注:

对于10%的数据,
对于40%的数据,
对于100%的数据,