Go: package main

import "fmt"

func isOrdered(a []int) bool {
	if len(a) <= 1 {
		return true
	}
	for i := 0; i+1 < len(a); i++ {
		if a[i] > a[i+1] {
			return false
		}
	}
	return true
}

func main() {
	// ボールの数がせいぜい10個しかないので、全てのボールの落とし方を全探索することが可能
	// Bit全探索を行う。右から見てj番目のビットが立っているときには左側の筒、立っていない時は右側の筒にいれる物とする。
	// 全てのボールを落とし終わった後に、それぞれの筒で昇順に並んでいるか調べることにする。
	var t int
	fmt.Scan(&t)
	ans := make([]bool, t)
	for i := 0; i < t; i++ {
		balls := make([]int, 10)
		for i := range balls {
			fmt.Scan(&balls[i])
		}
		ans[i] = false
		for bits := 0; bits < (1 << uint(10)); bits++ {
			pipeB := make([]int, 0)
			pipeC := make([]int, 0)
			for j := 0; j < 10; j++ {
				if (bits & (1 << uint(j))) != 0 {
					pipeB = append(pipeB, balls[j])
				} else {
					pipeC = append(pipeC, balls[j])
				}
			}
			if isOrdered(pipeB) && isOrdered(pipeC) {
				// fmt.Printf("test case %d - OK pattern - pipeB %v, pipec %v\n", i, pipeB, pipeC)
				ans[i] = true
				break
			}
		}
	}
	for i := range ans {
		if ans[i] {
			fmt.Println("YES")
		} else {
			fmt.Println("NO")
		}
	}
}

C++: #include<iostream>
#include<vector>
#include<queue>
using namespace std;
int main(void){
	int n;
	cin>>n;
	vector<int> a(10);
	for(int i=0;i<n;i++){
		queue<int>b,c,d;
for(int j=0;j<10;j++){
	cin>>a[j];
}
for(int j=0;j<10;j++){
	if(b.empty()){
		b.push(a[j]);
	}else if(b.back()<a[j]){
		b.push(a[j]);
	}else if(c.empty()){
		c.push(a[j]);
	}else if(c.back()<a[j]){
		c.push(a[j]);
	}else{
		d.push(a[j]);
	}

}
if(d.empty()){
	cout<<"YES"<<endl;
}else{
	cout<<"NO"<<endl;
}
	}
	return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
  int n;
  cin >> n;
  for(int i = 0; i < n; i++) {
    int data[10];
    for(int j = 0; j < 10; j++) {
      cin >> data[j];
    }

    int b = 0;
    int c = 0;
    int flag = true;
    for(int j = 0; j < 10; j++) {
      if(data[j] > b) b = data[j];
      else if(data[j] > c) c = data[j];
      else {
	flag = false;
	break;
      }
    }
    if(flag) {
      cout << "YES" << endl;
    } else {
      cout << "NO" << endl;
    }
  }
  return 0;
}

C++: #include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int n;
int ball[12],s[12];
bool jud()
{
	int pre=0;
	for(int i=0;i<10;i++)
	 if(!s[i])
	 	if(ball[i]<pre)
	 		return false;
	 	else 
	 		pre=ball[i];
	pre=0;
	for(int i=0;i<10;i++)
	 if(s[i])
	 	if(ball[i]<pre)
	 		return false;
	 	else 
	 		pre=ball[i]; 	
	return true;
}
bool DFS(int x)
{
	if(x==10) return jud();
	if(DFS(x+1)) return true;
	s[x]=1;
	if(DFS(x+1)) return true;
	s[x]=0;
	return false;
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		memset(s,0,sizeof(s));
		for(int j=0;j<10;j++)
			scanf("%d",&ball[i]);
		if(DFS(0))
			cout<<"YES"<<endl;
		else 
			cout<<"NO"<<endl;
	}
}

C++: #include<cstdio>
int n,j,lj,F;
int a[15],f[15];
int main()
{
	scanf("%d",&n);
	while(1)
	{
		j=0;F=0;lj=0;
		for(int i=1;i<=10;i++)
		f[i]=0,a[i]=0; 
		for(int i=1;i<=10;i++)
		scanf("%d",&a[i]);
		lj=1;
		for(int i=1;i<=10;i++)
		if(a[i+1]>a[lj]) f[lj]=1,lj=i+1;
		lj=0;
		for(int i=1;i<=10;i++)
		if(!f[i])
		{
			if(a[i]>a[lj]) lj=i;
			else {printf("NO\n");F=1;break;}
		}
		if(F) continue;
		printf("YES\n");
	}
}
/*
#include <iostream>  
  
using namespace std;  
  
const int N = 10;  
  
int main()  
{  
    int n;  
  
    cin >> n;  
    while(n--) {  
        bool ans = true;  
        int a, b=-1, c=-1;  
        for(int i=1; i<=N; i++) {  
            cin >> a;  
            if(ans) {  
                if(a > b)  
                    b = a;  
                else if(a > c)  
                    c = a;  
                else  
                    ans = false;  
            }  
        }  
  
        cout << (ans ? "YES" : "NO") << endl;  
    }  
  
    return 0;  
}  
*/

C++: #include<iostream>
using namespace std;

int main(){
	int n;
	cin>>n;
	
	for(int i=0;i<n;i++){
		int ball[10]={};
		for(int j=0;j<10;j++) cin>>ball[j];
		int a=0,b=0,k;
		for(k=0;k<10;k++){
			if(a<ball[k]) a=ball[k];
			else if(b<ball[k]) b=ball[k];
			else break;
		}
		if(k==10) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
return 0;
}

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

int main(){
	int N;
	cin>>N; 
	while(N-->0){
		int frist=0,last=0,a;
		string s = "YES";
		for(int i=0;i<10;i++){
			cin>>a;
			if(a>last){
				last = a;
			}else if(a>frist){
				frist = a;
			}else {
				frist = -1;
				s = "NO";
			}
		}
		cout<<s<<endl;
	}
	return 0;
}

C++: #include <iostream>

using namespace std;

int main(void){
  int data;
  int data_set;
  int box1,box2;
  int i,j,k,l;
  bool f;

  cin>>data_set;
  for(i=0;i<data_set;i++){
    box1=0;
    box2=0;
    f=false;
    for(j=0;j<10;j++){
      cin>>data;
      if(data>box1&&data>box2){
	if(box1<box2){
	  box2=data;
	}else{
	  box1=data;
	}
      }
      else if(data>box1){
	box1=data;
      }
      else if(data>box2){
	box2=data;
      }
      else{
	f=true;
      }
    }
    if(f){
      cout<<"NO"<<endl;
    }else{
      cout<<"YES"<<endl;
    }
  }
  return(0);
}

C++: #include<iostream>
const int nn = 10;
int a[nn];
using namespace std;
bool dfs()
{
	int left = -1;
	int right = -1;
	
	int T = 0;
	while (T<nn)
	{
		if (right < a[T])
		{
			right = a[T++];
			continue;
		}
		if (left < a[T])
		{
			left = a[T++];
			continue;
		}
		return false;
	}
	return true;
}
int main()
{
	//freopen("in.txt", "r", stdin);
	int N;
	scanf("%d", &N);
	while (N--)
	{
		for (int i = 0; i < nn; i++)
			scanf("%d", &a[i]);
		if (dfs())
			printf("YES\n");
		else
			printf("NO\n");
	}

	return 0;
}

C++: #include<iostream>

using namespace std;

char *solve(int d[10])
{
	int l,r;
	l=r=0;
	for(int i=0;i<10;i++)
	{
		if(l>d[i]&&r>d[i])
		{
			return "NO";
		}
		else if(l<d[i]&&r>d[i])
		{
			l=d[i];
		}
		else if(r<d[i]&&l>d[i])
		{
			r=d[i];
		}
		else if(r<l)
		{
			l=d[i];
		}
		else
		{
			r=d[i];
		}
	}
	return "YES";
}

int main(void)
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int d[10];
		for(int j=0;j<10;j++)
		{
			cin>>d[j];
		}
		cout<<solve(d)<<endl;
	}
}

C++: #include<cstdio>
int main()
{
  int n;
  scanf("%d",&n);
  int a[n][10];
  for(int i=0;i<n;i++)
  {
  	for(int j=0;j<10;j++)
	  {
	  	scanf("%d",&a[i][j]);
	  	
			}  	
   }
   
    for(int i=0;i<n;i++)
  {
  	int k=a[i][0];
  	a[i][0]=0;
  	for(int j=0;j<10;j++)
	  {
	    if(a[i][j]>k)
	    {
	    	k=a[i][j];
	    	a[i][j]=0;
		}
			}  	
   }
 
       for(int i=0;i<n;i++)
  {  
    int ins;
  	int count=0;
  	int judge=1;
  	for(int j=0;j<10;j++)
	  {
      if(a[i][j]==0)continue;
      if(count==0)
      {
      	ins=a[i][j];
      	count++;
	  }
      else
      {
      	if(a[i][j]<ins) {
		  judge=0;break;
	}
      	count++;
	  }
		}
		if(judge)printf("YES\n");
		else printf("NO\n");
			}  	
			
			return 0;
   }

C++: #include <cstdio>
int a[10];

bool dfs(int k, int B, int C){
    if(k == 10) return true;
    if(a[k] > B){
        if(dfs(k + 1, a[k], C))
            return true;
    }
    if(a[k] > C){
        if(dfs(k + 1, B, a[k]))
            return true;
    }
    return false;
}

void solve(){
    if(dfs(0, 0, 0))
        printf("YES\n");
    else
        printf("NO\n");
}

int main(int argc, char const *argv[]){

    int t;
    scanf("%d", &t);
    while(t --){
        for(int i = 0; i < 10; i ++)
            scanf("%d", &a[i]);
        solve();
    }

    return 0;
}