#include <bits/stdc++.h>
using namespace std;
int T, s, a[1005][1005], b[1005][1005];
int find(int y, int x)
{
if(b[y][x] != -1)
return b[y][x];
b[y][x] = 1;
if(y-1>=1 && a[y-1][x] == a[y][x] + 1)
b[y][x] = max(b[y][x], find(y-1, x) + 1);
if(y+1<=s && a[y+1][x] == a[y][x] + 1)
b[y][x] = max(b[y][x], find(y+1, x) + 1);
if(x-1>=1 && a[y][x-1] == a[y][x] + 1)
b[y][x] = max(b[y][x], find(y, x-1) + 1);
if(x+1<=s && a[y][x+1] == a[y][x] + 1)
b[y][x] = max(b[y][x], find(y, x+1) + 1);
//cout << b[y][x] << endl;
return b[y][x];
}
void docase(int t)
{
cin >> s;
for(int j=1;j<=s;j++)
for(int i=1;i<=s;i++)
cin >> a[j][i];
int mx = 0, mx_x=0, mx_y=0;
for(int j=1;j<=s;j++)
{
for(int i=1;i<=s;i++)
{
find(j, i);
if(mx == 0 || b[j][i] > mx || (b[j][i] == mx && a[j][i] < a[mx_y][mx_x]))
{
//cout << a[mx_y][mx_x] << "-";
mx = b[j][i];
mx_x = i;
mx_y = j;
//cout << a[mx_y][mx_x] << " " << mx << endl;
}
}
}
cout << "Case #" << t << ": " << a[mx_y][mx_x] << " " << mx << endl;
}
int main()
{
cin >> T;
for(int i=1;i<=T;i++)
{
for(int j=0;j<1005;j++)
for(int i=0;i<1005;i++)
b[j][i] = -1;
docase(i);
}
return 0;
}