#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
long long toNum(string s){
long long num = 0;
for(int i = 0 ; i < s.size() ; i++){
num = (num * 10) + (s[i] - '0');
}
return num;
}
void print(deque<int> ddq){
while(!ddq.empty()){
cout << ddq.front() << " ";
ddq.pop_front();
}
cout << endl;
}
void solve(){
int n;
cin >> n;
int l = 0, r = n - 1;
vector<int> v(n);
deque<int> dq;
for(int i = 0 ; i < n ;i++){
cin >> v[i];
}
int tmp = n;
while(tmp--){
if(l == 0 && r == n-1){
if(v[l] >= v[r]){
dq.push_back(v[l++]);
}else{
dq.push_back(v[r--]);
}
}else{
int left = v[l], right = v[r];
if((right > dq.front() && right < dq.back()) && (left > dq.front() && left < dq.back())){
cout << "NO\n";
return;
}else if(left <= dq.front() && right <= dq.front()){
if(left >= right){
dq.push_front(left);
l++;
}else{
dq.push_front(right);
r--;
}
}else if(left >= dq.front() && right >= dq.front()){
if(left <= right){
dq.push_front(left);
l++;
}else{
dq.push_front(right);
r--;
}
}else if(left <= dq.front()) dq.push_front(v[l++]);
else if(left >= dq.back()) dq.push_back(v[l++]);
else if(right <= dq.front()) dq.push_front(v[r--]);
else if(right >= dq.back()) dq.push_back(v[r--]);
else{
cout << "NO\n";
return;
}
}
}
cout << "YES\n";
}
int main(){
ios_base::sync_with_stdio(0), cin.tie(0);
int t = 1;
cin >> t;
while(t--){
solve();
}
return 0;
}