include[HTML_REMOVED]
const int N = 40;
int n,m;
bool st[N];
int a[N][N];
using namespace std;
bool check_row(){
for(int i = 0; i < m; i){//遍历每一行
memset(st, 0, sizeof st);
for(int j = 0; j < m; j){
int t = a[i][j];
if(t < 0 || t > m) return false;
if(st[t]) return false;
st[t] = true;
}
}
return true;
}
bool check_col(){
for(int i = 0; i < m; i){
memset(st, 0, sizeof st);
for(int j = 0; j < m; j){
int t = a[j][i];
if(t < 0 || t > m)return false;
if(st[t]) return false;
st[t] = true;
}
}
return true;
}
bool check_rock(){
for(int x = 0; x < m ; x += n){
for(int y = 0; y < m; y += n){
memset(st, 0, sizeof st);
for(int dx = 0; dx < n; dx){
for(int dy = 0; dy < n; dy){
int t = a[x + dx][y + dy];
if(t < 0 || t > m)return false;
if(st[t]) return false;
st[t] = true;
}
}
}
}
return true;
}
int main(){
int T;
cin >> T;
for(int C = 1; C < T + 1; C){
cin >> n;
m = n * n;
for(int i = 0; i < m; i)
for(int j = 0; j < m; j++)
cin >> a[i][j];
if(check_row() && check_col() && check_rock()) printf("Case #%d: Yes\n", C);
else printf("Case #%d: No\n", C);
}
return 0;
}