//poj 2485 Highways
//MST(minimum spanning tree)
//here is want to get the longest road
#include <stdio.h>
#include <string.h>
#define N 505
#define INF 1<<30
int n;
int map[N][N], dis[N], ans;
bool vis[N];
void prim()
{
for(int i = 0; i < n; ++i)
{
dis[i] = INF;
vis[i] = false;
}
dis[0] = 0;
while(1)
{
int min = INF, index = -1;
for(int i = 0; i < n; ++i)
{
if(vis[i] == false && min > dis[i])
{
min = dis[i];
index = i;
}
}
if(index == -1)
return;
vis[index] = true;
if(ans < min) //保存MST中的最长路
ans = min;
for(int i = 0; i < n; ++i)
if(vis[i] == false && dis[i] > map[index][i])
dis[i] = map[index][i];
}
}
int main()
{
int n_case;
scanf("%d", &n_case);
while(n_case--)
{
ans = 0;
memset(map, 0, sizeof(map));
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
scanf("%d", &map[i][j]);
map[j][i] = map[i][j];
}
}
prim();
printf("%d\n", ans);
}
return 0;
}