#include #include #include #include #include #include #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++) #define per(i,j,k) for(int i=(int)j;i>=(int)k;i--) using namespace std; typedef long long LL; typedef double db; const int N=215; int a[N][N]; char str[N]; int n,T; int tmp[N]; void relax(int *A){ rep(i,1,A[0]){A[i+1]+=A[i]/10;A[i]%=10;} while(A[A[0]+1]){ A[0]++; A[A[0]+1]+=A[A[0]]/10;A[A[0]]%=10; } while((!A[A[0]])&&A[0]>1)A[0]--; } bool equ(int *A,int *B){ if(A[0]!=B[0])return 0; rep(i,1,A[0])if(A[i]!=B[i])return 0; return 1; } int tmp2[N]; void Main(){ scanf("%d",&n); rep(i,1,n)rep(j,0,210)a[i][j]=0; int tp=0; rep(i,1,n){ scanf("%s",str+1); a[i][0]=strlen(str+1); rep(j,1,a[i][0])a[i][j]=str[a[i][0]+1-j]-'0'; relax(a[i]); if(a[i][0]==1&&a[i][1]==0)tp++; } if(tp>0){ if(tp==n)printf("Yes\n"); else printf("No\n"); return; } bool fl=1; rep(i,2,n-1){ rep(j,0,210)tmp[j]=0; tmp[0]=a[i-1][0]+a[i+1][0]-1; rep(j,1,a[i-1][0])rep(k,1,a[i+1][0]) tmp[j+k-1]+=a[i-1][j]*a[i+1][k]; relax(tmp); rep(j,0,210)tmp2[j]=0; tmp2[0]=a[i][0]+a[i][0]-1; rep(j,1,a[i][0])rep(k,1,a[i][0]) tmp2[j+k-1]+=a[i][j]*a[i][k]; relax(tmp2); if(!equ(tmp,tmp2)){fl=0;break;} } if(fl)printf("Yes\n"); else printf("No\n"); } int main(){ scanf("%d",&T); while(T--){ Main(); } return 0; }