stl set
#include<iostream>
#include<set>
using namespace std;
set<int> ss;
int n_n;
int n;
int a[1005][1005];
bool judge()
{
for(int i=1;i<=n_n;i++)
{
ss.clear();
for(int j=1;j<=n_n;j++)
{
if(ss.find(a[i][j])!=ss.end())
return 0;
else ss.insert(a[i][j]);
}
}
for(int j=1;j<=n_n;j++)
{
ss.clear();
for(int i=1;i<=n_n;i++)
{
if(ss.find(a[i][j])!=ss.end())
return 0;
else ss.insert((a[i][j]));
}
}
for(int i=1;i<=n_n;i+=n)
for(int j=1;j<=n_n;j+=n)
{
ss.clear();
for(int p=i;p<=i+n-1;p++)
for(int q=j;q<=j+n-1;q++)
{
if(ss.find(a[p][q])!=ss.end())
return 0;
else ss.insert(a[p][q]);
}
}
return 1;
}
int main()
{
int T;
int ok;
scanf("%d",&T);
int cases=1;
while(T--)
{
scanf("%d",&n);
n_n=n*n;
ok=1;
for(int i=1;i<=n_n;i++)
for(int j=1;j<=n_n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]>n_n || a[i][j]<1)
{
ok=0;
}
}
if(!ok)
{
printf("Case #%d: No\n",cases++);
}
else if(judge())
{
printf("Case #%d: Yes\n",cases++);
}else {
printf("Case #%d: No\n",cases++);
}
}
return 0;
}