#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct E{
int x,y,w;
}edges[250010];
int father[510];
bool cmp(E a,E b)
{
return (a.w<b.w);
}
int Find(int pos)
{
if (father[pos]==pos)
return pos;
return father[pos]=Find(father[pos]);
}
void Union(int posi,int posj)
{
int fi=Find(posi),fj=Find(posj);
father[fi]=fj;
}
int main()
{
int t,n,i,j,k,length;
scanf("%d",&t);
while (t--){
k=0;
scanf("%d",&n);
for (i=1;i<=n;i++)
father[i]=i;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++){
scanf("%d",&length);
if (i>j){
edges[k].x=i;
edges[k].y=j;
edges[k++].w=length;
}
}
sort(edges,edges+n*(n-1)/2,cmp);
int max=0;
for (i=0;i<n*(n-1)/2;i++)
if (Find(edges[i].x)!=Find(edges[i].y)){
Union(edges[i].x,edges[i].y);
if (max<edges[i].w)
max=edges[i].w;
}
printf("%d/n",max);
}
return 0;
}
07-22
07-22
07-22
07-22