#![allow(non_snake_case, unused_imports)] use std::collections::{BinaryHeap, HashMap, HashSet}; use proconio::{input, marker::Usize1, marker::Chars}; use itertools::Itertools; #[allow(unused_macros)] macro_rules! d { ( $( $x:expr ),* $(,)? ) => { eprintln!( concat!( $( stringify!($x), "={:?} " ),* ), $( $x ),* ); }; } #[allow(dead_code)] fn yn(b: bool) -> &'static str { if b { "Yes" } else { "No" } } fn solve() -> bool { input! { N: usize, H: [i64; N], } #[derive(Debug, PartialEq, Eq)] enum E { Up, Down, } let a = H.iter() .tuple_windows::<(_, _)>() .map(|(a, b)| { if a < b { E::Up } else { E::Down } }) .dedup() .collect_vec(); let ok = match a.as_slice() { [E::Down, E::Up, E::Down, E::Up] => true, _ => false, }; ok } fn main() { input! { T: usize, } for _ in 0..T { let ans = solve(); println!("{}", yn(ans)); } }