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;

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

C++: #include <bits/stdc++.h>
using namespace std;
int main()
{
  int n,a;
  int f = 0;
  int b = 0 ,c = 0;
  cin >> n;
  for(int j = 0;j < n;j++){
    f=0;
    for(int i = 0;i < 10;i++){
      cin >> a;
      if(b < a)b = a;
      else if(c < a)c = a;
      else {
	f = 1;	
      }  
    }
    if(f == 1)cout << "NO" << endl;
    else cout << "YES" << endl;
  }
  return 0;
}

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

int main() {
	int n, x,a=0,b=0;
	bool f;
	cin >> n;
	for (int lop = 0,f=1; lop < n; lop++) {
		for (int i = 0; i < 10; i++) {
			cin >> x;
			if (f) {
				if (a < x) {
					a = x;
					continue;
				}
				if (b < x) {
					b = x;
					continue;
				}
				f = 0;
			}
		}

		cout << (f ? "YES" : "NO") << endl;
	}
	return 0;
}

C++: #include<iostream>
using namespace std;
int x[10];
int func(int n,int r,int l){
    if(n == 10)return 1;
    if(x[n]>r){
        if(func(n+1,x[n],l))return 1;
    }

    if(x[n]>l){
        if(func(n+1,l,x[n]))return 1;
    }
    return 0;
}
int main(){
	int n;
	cin>>n;
	while(n-->0){
	for(int i=0;i<10;i++)
	cin>>x[i];
	if(func(0,0,0))
	cout<<"YES"<<endl;
	else cout<<"NO"<<endl;
	}
	return 0;
}

C++: //#include <iostream>
//#include <cstdio>
//#include <iomanip>
//#include <cstring>
//#include <cmath>
//#include <cstdlib>
//#include <algorithm>
//#include<stack>
//#include<vector>
//
//using namespace std;
//int t[11];
//vector<int>a;
//vector<int>b;
//int aa,bb;
//bool solve()
//{
//      for(int i = 0 ; i< 1<<10 ;i++)
//      {
//          a.clear(),aa=0;
//          b.clear(),bb=0;
//        for(int j = 0 ; j < 10 ; j++)
//        {
//            if(i&(1<<j))
//            a.push_back(t[j]);
//            else
//            b.push_back(t[j]);
//
//        }
//      for(int i=0;i<a.size();i++)
//      {
//         if(a[i]>a[i+1])
//              // if (a.at(i) > a.at(i + 1))
//          {
//                 aa=1;break;
//          }
//
//      }
//
//        for(int i=0;i<b.size();i++)
//      {
//          if(b[i]>b[i+1])
//          {
//              bb=1;break;
//          }
//
//      }
//
//      if(aa==0&&bb==0)
//      {
//          return true;
//      }
//
//    }
//
//        return false;
//
//
//}
//int main()
//{
//    int n;
//    scanf("%d",&n);
//    while(n--)
//    {
//        a.clear();aa=0;
//        b.clear();bb=0;
//        memset(t,0,sizeof(t));
//        for(int i = 0 ; i < 10 ; i++)
//        {
//           scanf("%d",&t[i]);
//        }
//
//        if(solve())
//            cout<<"YES"<<endl;
//        else
//            cout<<"NO"<<endl;
//
//   }
//}

 #include <iostream>
  #include <vector>
  #include <algorithm>

  using namespace std;

  int n;
  int ball[10];
  vector<int> l;
 vector<int> r;

 bool solve() {
     bool res = false;
  for (int i = 0; i < 1024; i++) {
        for (int j = 0; j < 10; j++) {
             if (i & (1 << j)) {
                 l.push_back(ball[j]);
             }
             else {
                 r.push_back(ball[j]);
             }
         }
     
         bool lOK = true;
         bool rOK = true;
        for (int j = 0; j < (l.size() - 1); j++) {
             if (l[j] > l[j + 1]) {
                 lOK = false;
                 break;
             }
       }
        for (int j = 0; j <( r.size() - 1); j++) {
             if (r[j] > r[j + 1]) {
                 rOK = false;
                 break;
             }
        }
         if (lOK==true&& rOK==true) {
             res = true;
             break;
         }
         l.clear();
        r.clear();
    }
     return res;
 }

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

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

C++: #include <iostream>
#include <stdlib.h>
using namespace std;
void DFS(int* arr, int pos, int* res, int index, bool& flag) {
    if (pos >= 10||flag)
    {
        return;
    }
    if ((index==0) || (index >= 1 && res[index - 1] < arr[pos]))
    {
        res[index] = arr[pos];
        arr[pos] = 0;
    }
    DFS(arr, pos+1, res, index+1, flag);
    if (flag)
    {
        return;
    }
    int pre = 0;
    int cur = 0;
    flag = true;
    for (int i = 0; i < 10; i++)
    {
        if (arr[i]!=0)
        {
            pre = pre == 0 ? arr[i] : cur;
            cur = arr[i];
            if (cur < pre)
            {
                flag = false;
                break;
            }
        }
    }
}

int main()
{
    int N, arr[11], res[10];
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            cin >> arr[j];
        }
        bool flag = false;
        DFS(arr, 0, res, 0, flag);
        if (flag)
        {
            cout << "YES" << endl;
        }
        else
        {
            cout << "NO" << endl;
        }
    }
   // system("pause");
    return 0;
}

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

int main(){
	int n;
	scanf("%d",&n);
	for(;n>0;n--){
		int a=0,b=0,c;
		bool t=true;
		for(int i=0;i<10;i++){
			scanf("%d",&c);
			if(c>b){ b=c; }
			else if(c>a){ a=c; }
			else { t=false; break; }
		}
		if(t)printf("YES\n");
		else printf("NO\n");
	}
}