#include <bits/stdc++.h>
using namespace std;

using vi = vector<int>;
using vs = vector<string>;
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define repback(i,n) for(int i=(int)n-1;i>=0;i--)
#define repa(i,a,n) for(int i=a;i<(int)(n);i++)
typedef pair<int, int> P;
typedef queue<int> qi;
typedef long long ll;
const ll INF = 1e7, MAX_N = 99, MAX_M = 1000, MAX_W = 100, MAX_H = 100;

int asc(const void* a, const void* b) {
    return *(int*)a - *(int*)b;
}
void clear(std::queue<int>& q)
{
    std::queue<int> empty;
    std::swap(q, empty);
}

int N;
int balls[10];
qi qa, qb;
bool possible = false;

void bfs(int i) {
    //完遂可能
    if (i == 10) {
        possible = true;
        return;
    }
    //Aに球をのせられる場合
    if (qa.empty() || qa.back() < balls[i]) {
        qa.push(balls[i]);
        bfs(i + 1);
    }
    //Bに球をのせられる場合
    if (qb.empty() || qb.back() < balls[i]) {
        qb.push(balls[i]);
        bfs(i + 1);
    }
    //完遂不可能
    else return;
}
int main() {
    //入力
    cin >> N;
    rep(p, N) {
        rep(k, 10) cin >> balls[k];
        possible = false;
        clear(qa); clear(qb);
        bfs(0);
        if (possible) cout << "YES" << endl;
        if (!possible) cout << "NO" << endl;
    }
    return 0;
}
