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<stack>
using namespace std;
int main(){
  stack<int>a;
  stack<int>b;
  int n,m,s;
  cin>>n;
  for(int i=0;i<n;i++){
    s=0;
    a.push(0);
    b.push(0);
    for(int i=0;i<10;i++){
      cin>>m;
      if(m>a.top()){
	a.push(m);
      }
      else if(m>b.top()){
	b.push(m);
      }
      else s=1;
    }
    if(s==0)cout<<"YES"<<endl;
    else    cout<<"NO"<<endl;
  }
  return 0;
}

C++: #include <iostream>

int main(void)
{
	int n;
	std::cin >> n;
	for(int j=0; j<n; j++)
	{
		int top[2]={0,0};
		for(int i=0; ; i++)
		{
			int next;
			std::cin >> next;
			if((top[0] < next)&&(top[1] < next))
			{
				if(top[0] < top[1])
					top[1]=next;
				else
					top[0]=next;
			}
			else if(top[0] < next)
				top[0]=next;
			else if(top[1] < next)
				top[1]=next;
			else
			{
				std::cout << "NO" << std::endl;
				break;
			}

			if(i==9)
			{
				std::cout << "YES" << std::endl;
				break;
			}
		}
	}
	return 0;
}

C++: #include<iostream>
#include<iomanip>
#include<math.h>
#include<vector>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<unordered_map>
#define INF 1000000000ll
#define MOD 1000000007ll
#define EPS 1e-8
#define REP(i, m) for(long long i=0; i<m; ++i)
#define FOR(i, n, m) for(long long i=n; i<m; ++i)
#define ALL(v) v.begin(), v.end()
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
typedef long double ld;
typedef vector<int> vi;
typedef vector<vector<int> > vii;
typedef vector<ll> vl;
typedef vector<vector<ll> > vll;

int main() {
	ios::sync_with_stdio(false);
	int n;
	cin>>n;
	REP(roop,n) {
		vector<int> num(10);
		REP(i,10) cin>>num[i];
		bool d=false;
		REP(bit,(1<<10)) {
			vector<bool> used(10,false);
			ll buf=bit;
			REP(i,10) {
				if(buf%2==1) used[i]=true;
				buf/=2;
			}
			bool e=true;
			int an=0,bn=0;
			REP(i,10) {
				if(used[i]) {
					if(an>num[i]) e=false;
					an=num[i];
				} else {
					if(bn>num[i]) e=false;
					bn=num[i];
				}
			}
			d=d|e;
		}
		if(d) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
}

C++: #include <iostream>

const int size = 10;

int num[size];

bool dfs(int beforeB, int beforeC, int depth) {
	if(depth == 10)
		return true;
	
	if(num[depth] > beforeB)
		return dfs(num[depth], beforeC, depth + 1);
	else if(num[depth] > beforeC)
		return dfs(beforeB, num[depth], depth + 1);
	else
		return false;
}

int main() {
	int n = 0;
	std::cin >> n;
	
	for(int i = 0; i < n; ++i) {
		for(auto&& x : num)
			std::cin >> x;
		
		std::cout << (dfs(0, 0, 0) ? "YES" : "NO") << std::endl;
	}
}

C++: #include<stdio.h>

int main(){

int n[11]={};
int m[11]={},p[11]={};
int N;
int P=0,M=0;
bool f=true;

while(1){
scanf("%d",&N);if(N==0)break;

for(int i=0;i<10;i++)
scanf("%d",&n[i]);

for(int i=0;i<10;i++)
if(m[M]<n[i]){M++;m[M]=n[i];}
else if(p[P]<n[i]){P++;p[P]=n[i];}
else f=false;
}

if(f=true)printf("YES\n");
else printf("NO\n");

for(int i=0;i<10;i++)
{p[i]=0;m[i]=0;}

bool f=true;
P=0,M=0;


}
return 0;
}

C++: #include <iostream>
#include <stdio.h>
using namespace std;
int main() {
  int b[10],z,x,n,i;
  cin >> n;
  for (n;n>0;n--) {
	  cin >> b[0] >> b[1] >> b[2] >> b[3] >> b[4] >> b[5] >> b[6] >> b[7] >> b[8] >> b[9];
      z=0; x=0;
	  for (i=0;i<10;i++) {
		  if (b[i]<x && b[i]<z) { i=20; break; }
		  if (z>x) { if (b[i]<z) x=b[i]; else z=b[i];} 
		  else {if (b[i]<x) z=b[i]; else x=b[i];} 
		   
	  }
	  if (i<20) cout << "YES" << endl; else cout << "NO" << endl;
  }
 return 0;
  }

C++: #include <iostream>
#include <vector>

int BALLNUM = 10;

	static int data[10];
class balldata
{
private:
	//static std::vector <int> data;
	//int ballnum;
public:
	balldata(int datanum);
	static void enter();
	static void answer();
	static bool check();
	static bool check(int num,int right,int left);
};




int main()
{
	balldata ball(BALLNUM);

int N;
	std::cin >> N;
	for (int i = 0; i < N; i++)
	{
		ball.enter();
		ball.answer();
	}
}


balldata::balldata(int datanum)
{
	//ballnum = datanum;
	//data.resize(datanum);
}



void balldata::enter()
{
	for (int i = 0; i < 10; i++)
	{
		std::cin >> data[i];
	}
	return;
}

bool balldata::check(int num,int right,int left)
{
	//if (num == data.size())return true;
	if (num == 10)return true;
	if (balldata::check(num + 1, right, data[num])&&left<data[num]){ return true; }
	if (balldata::check(num + 1, data[num], left)&&right<data[num]){ return true; }

	return false;
}
bool check()
{
	return balldata::check(0, 0, 0);
}

void balldata::answer()
{ 
	if (balldata::check(0, 0, 0))
	{
		std::cout << "YES" << std::endl;
	}
	else
	{
		std::cout << "NO" << std::endl;
	}
}

C++: #include<cstdio>  
int a,l1,l2,n;
bool f;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
	    f=0;l1=0;l2=-1;
		for(int j=1;j<=10;j++)
		{
			scanf("%d",&a);
			if(!f&&a<l2&&a<l1){printf("NO\n");f=1;continue;}
			if(!f&&l1>l2)
			{
				if(l1<a)l1=a;
				else l2=a;
			} 
			if(!f&&l2>l1)
			{
				if(l2<a)l2=a;
				else l1=a;
			}
		}
		if(!f)printf("YES\n");
	}
}

C++: #include <iostream>
 
using namespace std;
 
int main()
{
    int n, s, t, c, p, f;
    cin >> n;
     
    while(n--){
        s = f = t = 0;
        for(int i = 0; i < 10; i++){
            cin >> p;
            if(p < s && p < t){
                f = 1;
            } else if(p > s){
                s = p;
            } else if(p > t){
                t = p;
            } else {
                f = 1;
            }
        }
        if(f == 0){
            cout << "YES" << endl;
        } else {
            cout << "NO" << endl;
        }
    }
     
    return 0;
}

C++: #include <cstdio>
#include <queue>
using namespace std;

int main(void)
{
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++){
        queue < int > b, c;
        bool flag = true;
        
        b.push(0);
        c.push(0);
        
        int tmp;
        for (int i = 0; i < 10; i++){
            scanf("%d", &tmp);
            if (b.back() < tmp){
                b.push(tmp);
                if (i == 9) printf("YES\n");
            }
            else if (c.back() < tmp){
                c.push(tmp);
                if (i == 9) printf("YES\n");
            }
            else flag = false;
        }
        if (!flag) printf("NO\n");
    }
    
    return (0);
}

C++: #include<stdio.h>
#include<algorithm>
using namespace std;
int a[10],left[10],right[10];
void dfs(int i,int l,int r)
{
	if(i>9)
	{
		printf("YES\n");
		return;
	}
	else if(a[i]>left[l-1])
	{
		left[l++]=a[i++];
		dfs(i,l,r);
	}
	else if(a[i]>right[r-1])
	{
		right[r++]=a[i++];
		dfs(i,l,r);
	}
	else
	{
		printf("NO\n");
		return;
	}
}
int main()
{
	int t; 
	scanf("%d",&t);
	while(t--)
	{
		memset(a,0,sizeof(a));
		memset(left,0,sizeof(left));
		memset(right,0,sizeof(right));
		for(int i=0;i<10;i++)
			scanf("%d",&a[i]);
		dfs(0,1,1);
	}
	return 0;
}