//BestCoder #75 B //write by Lone Wolf in 2016.3.12 #pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include #include #include #include #include #include #include #include #include #include #define PI (acos(-1.0)) #define lowbit(x) (x&(-x)) #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) typedef long long LL; using namespace std; const int MOD=1000000007; const int INF=0x3f3f3f3f; const int N=100010; const int M=100010; const int Mat=110; typedef double Matrix[Mat][Mat]; const double eps=1e-10; inline int readint() { char c=getchar(); while (c<'0'||c>'9') c=getchar(); int x=0; while ('0'<=c&&c<='9') { x=x*10+c-'0'; c=getchar(); } return x; } int buf[10]; inline void writeint(int i) { int p=0; if (i==0) p++; else while (i) { buf[p++]=i%10; i/=10; } for (int j=p-1;j>=0;j--) putchar('0'+buf[j]); } int n,m; int G[10][10]={0,0,0,0,0,0,0,0,0,0, 0,0,0,2,0,0,0,4,0,5, 0,0,0,0,0,0,0,0,5,0, 0,2,0,0,0,0,0,5,0,6, 0,0,0,0,0,0,5,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,5,0,0,0,0,0, 0,4,0,5,0,0,0,0,0,8, 0,0,5,0,0,0,0,0,0,0, 0,5,0,6,0,0,0,8,0,0}; bool Visit[10]; int a[10]; void solve() { int i,j,k; memset(Visit,false,sizeof(Visit)); Visit[0]=true; a[0]=0; scanf("%d",&n); for (i=1;i<=n;i++) scanf("%d",&a[i]); if (n<4) {printf("invalid\n");return;} for (i=1;i<=n;i++) { if (a[i]>9||a[i]<=0) {printf("invalid\n");return;} if (Visit[a[i]]) {printf("invalid\n");return;} if (!Visit[G[a[i]][a[i-1]]]) {printf("invalid\n");return;} Visit[a[i]]=true; } printf("valid\n"); return; } int main() { //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); int i,T=1; scanf("%d",&T); for (i=1;i<=T;i++) { solve(); } return 0; }