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>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define B 0
#define C 1

int main()
{
    int n;
    cin >> n;
    while(n>0)
    {
        int a[10],b[10],c[10];
        rep(i,10)cin >> a[i];
        int bnum=0,cnum=0;
        int t;
        int side = B;
        int res =1;
        b[0] =a[9];
        bnum = 1;
        for(int i = 8;i!=-1;i--)
        {
            if(side == B)
            {
                if(b[bnum-1]<a[i])
                {
                    side=C;
                    if((cnum!=0)&&(c[cnum]<a[i])){res = 0;break;}
                    else{cnum++; c[cnum]=a[i]; }
                }
                else
                {
                    bnum++;
                    b[bnum] = a[i];
                }
            }
            else
            {
                if(c[cnum-1]<a[i]){
                    side = B;
                    if(b[bnum]<a[i]){res = 0;break;}
                    else{bnum++; b[bnum] = a[i];}
                }
                else
                {
                    cnum++;
                    c[cnum]=a[i];
                }
            }
        }
        if(res==1)cout <<"YES" << endl;
        else cout << "NO" << endl;
        n--;
    }
    return 0;
}

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

int main(){
	int b,c;
	int n,x[10];
	
	cin >> n;
	
	for(int i=0; i<n; i++){
		b=0; c=-1;
		for(int j=0; j<10;j++){
			cin >> x[j];
			if(b>c&&x[j]>b) b=x[j];
			else if(b<c&&x[j]>c) c=x[j];
			else if(b<c&&x[j]>b) b=x[j];
			else if(b>c&&x[j]>c) c=x[j];
			else b=11;
		}
		if(b==11) cout << "NO" << endl;
		else cout << "YES" << endl;
	}
	
	return 0;
}

C++: #include<iostream>
#include <vector>
using namespace std;
int ar[12];
vector<int> a,b;
bool dfs(int i)
{
	bool flag = true;
	if(i!=10)
	{
		if(a.empty()||a.back()<ar[i])
		{
			a.push_back(ar[i]);
			flag =  dfs(i+1);
		}
		else if(b.empty()||b.back()<ar[i])
		{
			b.push_back(ar[i]);
			flag = dfs(i+1);
		}
		else flag = false;
	}
	return flag;
}
int main()
{
	int n;
	cin >> n;
	while(n--)
	{
		for(int i = 0;i<10;i++)
			cin >> ar[i]; 
		cout<<(dfs(0)?"YES":"NO")<<endl;
		a.clear();b.clear();
	}
 }

C++: #include <cstdio>
int a[10],b,c,n;
bool ok;
int main() {
	scanf("%d",&n);
	for(int i=0;i<n;i++) {
		for(int j=0;j<10;j++) scanf("%d",&a[j]);
		b=c=0;ok=true;
		for(int j=0;j<10;j++) {
			if(a[j]>b) b=a[j];
			else if(a[j]>c) c=a[j];
			else {ok=false;break;}
		}
		printf("%s\n",ok?"YES":"NO");
	}
}

C++: #include<iostream>
using namespace std;
int main(){
  int t;
  cin >> t;
  int n[10];
  for(int i=0;i<t;i++){
    int h = 0,b = 0,c = 0;
    for(int j=0;j<10;j++) cin >> n[i]; 
    for(int j=0;j<10;j++){
      cin >> n[i];
      if(b==0) b = n[i];
      else if(b>c&&b<n) b = n[i];
      else if(c>b&&c<n) c = n[i];
      else if(b>c&&b>n&&c<n) c = n[i];
      else if(c>b&&c>n&&b<n) b = n[i];
      else if(b>n[i]&&c>n[i]){
	cout << "NO" << endl;
	h = 1;
	break;
      }
    }
    if(h==0) cout << "YES" << endl;
  }
  return 0;
}

C++: #include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,m;
int a[25];
int ans1[25];
int ans2[25];
int main()
{
    scanf("%d",&n);
    while(n--)
    {
        memset(a,0,sizeof(a));
        memset(ans1,0,sizeof(ans1));
        memset(ans2,0,sizeof(ans2));
        for(int i=1;i<=10;i++)
        {
            scanf("%d",&a[i]);
        }
        ans1[1]=a[1];
        ans2[0]=0;
        int p1=0,p2=0;
        int i;
        for(i=2;i<=10;i++)
        {
            if(a[i]>ans1[p1])
            {
                ans1[++p1]=a[i];
            }else if(a[i]>ans2[p2]){
                ans2[++p2]=a[i];
            }else{
                printf("NO\n");
                break;
            }
        }
        if(i>10)
        {
            printf("YES\n");
        }
    }
    return 0;
}

C++: #include<iostream>
#include<cstdio>
#include<fstream>
#include<queue>
#include<vector>
#include<cstring>
#define MAX 20
#define INF 10000000

using namespace std;



int main(){
	int A[MAX];
	int B = 0;
	int C = 0;
	int n;
	cin >> n;
	while(n--){
		int i;
		B = 0;
		C = 0;
		for(i=0; i<10; i++)
			cin >> A[i];
		for(i=0; i<10; i++){
			if(A[i] > B){
				B = A[i];
				continue;
			}
			if(A[i] > C){
				C = A[i];
				continue;
			}
			else{
				cout << "NO" << endl;
				break;
			}
		}
		if(i == 10)
			cout << "YES" << endl;
	}
	return 0;
}

C++: #include <iostream>
#include <cstdio>
#include <vector>
#include <climits>
using namespace std;
int b = INT_MIN, c = INT_MIN;
bool push(int ball) {
    if(ball > b) b = ball;
    else if (ball > c) c = ball;
    else return(false);
    return(true);
}

int main(void) {
    int num, ans = 0; cin >> num;
    for(int r = 0; r < num; r++) {
        for(int c = 0; c < 10; c++) {
            int input; cin >> input;
            bool result = push(input);
            if(!result) ans -= 100;
        }
        if(ans == 0) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return(0);
}