#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll N = 1e5 + 7;
multiset<ll> st;
bool valid(ll mn, ll mx) {
auto it = st.lower_bound(mn);
if (it != st.end() && *it <= mx) return false;
return true;
}
void delet(ll tmp) {
auto it = st.find(tmp);
st.erase(it);
}
bool check(vector<ll> &arr, ll i, ll j) {
bool ok = true;
ll mn, mx;
if (i > 1) mn = mx = arr[1];
else mn = mx = arr[j + 1];
while (i < j) {
delet(arr[i]);
if (valid(min(mn, arr[i]), max(mx, arr[i]))) {
mn = min (mn, arr[i]);
mx = max (mx, arr[i]);
i++;
continue;
}
st.insert(arr[i]);
delet(arr[j]);
if(valid(min(mn, arr[j]), max(mx, arr[j]))) {
mn = min (mn, arr[j]);
mx = max (mx, arr[j]);
j--;
}
else {
ok = false;
break;
}
}
return ok;
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0);
ll t = 1;
cin >> t;
while (t--) {
ll n; cin >> n;
vector<ll> arr(n + 1);
for (ll i = 1; i <= n; i++) cin >> arr[i];
for (int i = 2; i <= n; i++) st.insert(arr[i]);
if (check(arr, 2, n)) {
cout << "YES\n";
continue;
}
st.clear();
for (int i = 1; i < n; i++) st.insert(arr[i]);
if (check(arr, 1, n - 1)) cout << "YES\n";
else cout << "NO\n";
}
}