从左到右(超出时间限制)
// #include<bits/stdc++.h>
// using namespace std;
// const int maxn=200000;
// int A[maxn],pre[maxn],nex[maxn];
// map<int,int>cur;
// inline bool unique(int t,int L,int R){
// return (pre[t]<L && nex[t]>R);
// // return (pre[t]<L && nex[t]>R);
// }
// bool check(int l,int r){
// if(l>=r) return true;
// int i;
// for( i=0;l+i<=r-i;i++)
// {if(unique(l+i,l,r))// return check(l,l+i-1) && check(l+i+1,r);
// if(l+i==r-i)
// break;
// if(unique(r-i,l,r))
// return check(l,r-i-1)&& check(r-i+1,r);}
// return false;
// }
// int main(){
// int T,n;
// scanf("%d",&T);
// while(T--){
// scanf("%d",&n);
// for(int i=0;i<n;i++) scanf("%d",&A[i]);
// // cout<<"T:"<<T--;
// cur.clear();
// for(int i=0;i<n;i++){
// if(!cur.count(A[i])) pre[i]=-1;
// else pre[i]=cur[A[i]];
// cur[A[i]]=i;// }
// cur.clear();
// for(int i=n-1;i>=0;i--){
// if(!cur.count(A[i])) nex[i]=n;
// else nex[i]=cur[A[i]];
// cur[A[i]]=i;
// }// // for(int i=0;i<n;i++)
// // cout<<pre[i]<<" ";
// // cout<<endl;
// // for(int i=0;i<n;i++)
// // cout<<nex[i]<<" ";
// // cout<<endl;// if(check(0, n-1)) printf("non-boring\n");
// else printf("boring\n");// }// return 0;
// }#include<bits/stdc++.h>
using namespace std;
const int maxn=200000;
int A[maxn],pre[maxn],nex[maxn];
map<int,int>cur;
inline bool unique(int t,int L,int R){
return (pre[t]<L && nex[t]>R);
}
bool check(int l,int r){
if(l>=r) return true;int i;for( i=l;i<=r;i++)if(unique(i,l,r))return check(l,i-1)&& check(i+1,r);// cout<<"i:"<<i<<endl;return false;
}
int main(){
int T,n;scanf("%d",&T);while(T--){
scanf("%d",&n);for(int i=0;i<n;i++) scanf("%d",&A[i]);// cout<<"T:"<<T--;cur.clear();for(int i=0;i<n;i++){
if(!cur.count(A[i])) pre[i]=-1;else pre[i]=cur[A[i]];cur[A[i]]=i;}cur.clear();for(int i=n-1;i>=0;i--){
if(!cur.count(A[i])) nex[i]=n;else nex[i]=cur[A[i]];cur[A[i]]=i;}// for(int i=0;i<n;i++)// cout<<pre[i]<<" ";// cout<<endl;// for(int i=0;i<n;i++)// cout<<nex[i]<<" ";// cout<<endl;if(check(0, n-1)) printf("non-boring\n");else printf("boring\n");}return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int maxn=200000;
int A[maxn],pre[maxn],nex[maxn];
map<int,int>cur;
inline bool unique(int t,int L,int R){
return (pre[t]<L && nex[t]>R);// return (pre[t]<L && nex[t]>R);
}
bool check(int l,int r){
if(l>=r) return true;int i;for( i=0;l+i<=r-i;i++){
if(unique(l+i,l,r))return check(l,l+i-1) && check(l+i+1,r);if(l+i==r-i)break;if(unique(r-i,l,r))return check(l,r-i-1)&& check(r-i+1,r);} return false;
}
int main(){
int T,n;scanf("%d",&T);while(T--){
scanf("%d",&n);for(int i=0;i<n;i++) scanf("%d",&A[i]);// cout<<"T:"<<T--;cur.clear();for(int i=0;i<n;i++){
if(!cur.count(A[i])) pre[i]=-1;else pre[i]=cur[A[i]];cur[A[i]]=i;}cur.clear();for(int i=n-1;i>=0;i--){
if(!cur.count(A[i])) nex[i]=n;else nex[i]=cur[A[i]];cur[A[i]]=i;}// for(int i=0;i<n;i++)// cout<<pre[i]<<" ";// cout<<endl;// for(int i=0;i<n;i++)// cout<<nex[i]<<" ";// cout<<endl;if(check(0, n-1)) printf("non-boring\n");else printf("boring\n");}return 0;
}