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<stdio.h>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<set>

using namespace std;

int n[12];
int N;

int kotae;


void dfs(int a,int b,int c){
	if(a==10){
		kotae = 1;
		return;
	}
	int now = n[a];
	if(now > b)dfs(a+1,now,c);
	if(now > c)dfs(a+1,b,now);
	return;
}
	


int main(){
	cin >> N;
	for(int ii=0;ii <N;ii++){
		for(int i=0;i<10;i++){
			cin >> n[i];
		}
		dfs(0,0,0);
		if(kotae == 1){
			cout << "YES" << endl;
		}
		else cout << "NO" << endl;
		kotae = 0;
	} 
	return 0;
}

C++: #include <iostream>

using namespace std;

int main()
{
	int input[10];
	int i = 0, num, j;
	int count = 0, flag = 0;

	cin >> num;

	while ( i < num )
	{
		for ( j = 0 ; j < 10 ; j = j + 1 )
		{
			cin >> input[j];
			if ( j >= 1 )
			{
				if ( input[j - 1] > input[j] )
					count = count + 1;
				else if ( input[j - 1] < input[j] )
					count = 0;

				if ( count == 2 )
				{
					flag = 1;
					break;
				}
			}

		}
		
		if ( flag == 0 )
			cout << "YES" << endl;
		else if ( flag == 1 )
			cout << "NO" << endl;

		flag = 0;
		count = 0;
		i = i + 1;
	}

	return 0;
}

C++: #include <iostream>

using namespace std;

int main(){
  int rep;
  cin >> rep;
  for(int i=0;i<rep;i++){
	int in,b = 0,c = 0;
	bool ball = true;
	for(int j=0;j<10;j++){
	  cin >> in;
	  if (in < b && in < c){     
		ball = false;
	  }
	  else if (in < b && in > c){
		c = in;
	  }
	  else if (in > b && in < c){
		b = in;
	  }
	  else if (in > b && in > c){
		((b > c)? b : c ) = in;
	  }
	}
	cout << (ball?"YES":"NO") << endl;
  }
}

C++: #include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
#include<stdio.h>
#include<queue>
#include <climits>
#include <map>
#include <set>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int mod = 1e9 + 7;
const long long INF = 1LL << 60;

int main() 
{
    int n; cin >> n;
    int ball[10];
    for(int i = 0; i < n; i++){
        bool can = true;
        for(int j = 0; j < 10; j++){
            cin >> ball[j];
        }
        int k = ball[0];
        int l = 0;
        for(int j = 1; j < 10; j++){
            if(ball[j]>k){
                k=ball[j];
            }else{
                if(l>ball[j]){
                    can = false;
                    break;
                }else{
                    l = ball[j];
                }
            }
        }
        if(can) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
}

C++: #include <iostream>
using namespace std;
int main(){
int a;
int b;
int n;
int c;
int d;
int e;
int f;
c=0;
while(c<n){
f=0;
a=0;
b=0;
d=0;
while(d<10){
cin >>e;
if(e>a&&a>b){a=e;}
else if(e>b&&b>a){b=e;}
else if(e>a){a=e;}
else if(e>b){b=e;}
else{f=1; break;}
d=d+1;}
if(f==0){cout <<"YES"<<endl;}
if(f==1){cout <<"NO"<<endl;}
c=c+1;}

C++: #include <cstdio>
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <algorithm>
#include <ctime>
#include <cctype>
#include <cmath>
#include <string>
#include <cstring>
#include <stack>
#include <queue>
#include <deque>
#include <list>
#include <vector>
#include <map>
#include <set>
#define sqr(x) ((x)*(x))
#define PI 3.1415926535897932384626
#define jue(x) (x>0?x:-x)
 
#define maxm 
#define maxn 1010
using namespace std;

int flag[10];
int num[10];

void dfs(int x){
	flag[x] = 1;
	for(int i = x + 1; i < 10; i++){
		if(num[i] > num[x]){
			dfs(i);
			break;
		}
	}
}

int main(){
	int n, res;
	while(scanf("%d", &n) == 1){
		while(n > 0){
			n--;
			res = 0;
			for(int i = 0; i < 10; i++){
				scanf("%d", &num[i]);
			}
			for(int i = 0; i < 10; i++){
				memset(flag, 0, sizeof flag);
				dfs(0);
				int numm[10], x = 0, y = 1;
				for(int j = 0; j < 10; j++){
					if(!flag[j]){
						numm[x++] = num[j];
					}
				}
				for(int j = 1; j < x; j++){
					if(numm[j - 1] >= numm[j]){
						y = 0;
					}
				}
				res = y;
				if(res) continue;
			}
			if(res){
				printf("YES\n");
			} else {
				printf("NO\n");
			}	
		}
	}
	return 0;
}

C++: #define _USE_MATH_DEFINES

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <utility>
#include <vector>
#include <numeric>

using namespace std;

int main()
{
	int n;
	for (cin >> n; n--;)
	{
		vector<int> a(10);
		for (int i = 0; i < 10; i++)
		{
			cin >> a.at(i);
		}
		
		int id = 1;
		bool b = true;
		for (int i = 0; i < a.size() - 1; i++)
		{
			for (int j = 1; j < a.size() - 1; j++)
			{
				if (a.at(j) > a.at(j - 1))
				{
					continue;
				}
				else
				{
					if (id == a.at(j))
					{
						id++;
						a.erase(a.begin() + j);
						break;
					}
					else
					{
						b = false;
						break;
					}
				}
			}

			if (!b)
			{
				break;
			}
		}


		cout << (b ? "YES" : "NO") << endl;
	}
}

C++: #include<map>
#include<set>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<vector>
#include<complex>
#include<cstdlib>
#include<cstring>
#include<numeric>
#include<sstream>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;
int main(){
    int N;
    cin>>N;
    for(int i=0;i<N;i++){
        int a[10]={};
        int b[10]={};
        int dat[10],o=0,s=0;
		for(int j=0;j<10;j++) {
			cin>>dat[j];
		}
        for(int j=0;j<=10;j++){
            if(j==10){
                cout<<"YES"<<endl;
                break;
                        }
            if(s==0||dat[j]>a[s-1]){
                a[s]=dat[j];
                s++;
            }
            else if(o==0||dat[j]>b[o-1]){
                b[o]=dat[j];
                o++;}
            else {
                cout<<"NO"<<endl;
            break;
            }
                    } 
    }
    return 0;
}

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

int main() {
	int n1,n2,num,temp,flg=1;
	cin>>num;
	while(num--){
		cin>>n1;
		for(int i=0;i<9;i++){
			cin>>temp;
			if(temp<n1&&temp<n2) flg=0;
			if(temp>n1) n2=temp;
			else if(temp>n2) n1=temp;
		}if(flg==1) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}return 0;
}

C++: #include <bits/stdc++.h>

using namespace std;

int ball[10];
int B[10];
int C[10];
int D[2] = {0,1};
int j,k;
int ans;

void bfs(int n);
int main()
{
  int n;
  
  cin >> n;

  while(n--){
    for(int i = 0;i < 10;i++){
      cin >> ball[i];
    }

    bfs(0);

    if(ans == 1)cout << "YES" << endl;
    else cout << "NO" << endl;
  }
}

void bfs(int n)
{
  if(n == 1){
    ans = 1;
    return ;
  }
  for(int i = 0;i < 2;i++){
    if(D[i] == 0){
      B[j] = ball[n];
      n++;
      if(B[j] < B[j-1])	return ;
      j++;
      bfs(n);
    }
    else{
      C[k] = ball[n];
      n++;
      if(C[k] < C[k-1])return ;
      k++;
      bfs(n);
    }
    return ;
  }
}