#include<cstdio> #include<stdlib.h> #define N 1000 struct node { int x,y,w; }p[N*N]; int f[N]; int cmp( const void *a ,const void *b) { return (*(node *)a).w > (*(node *)b).w ? 1 : -1; } int find(int x) { if(x!=f[x])f[x]=find(f[x]); return f[x]; } int main() { int t,i,j,k,n,b; scanf("%d",&t); while(t--) { scanf("%d",&n); k=0; for(i=0;i<=n;i++)f[i]=i; for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&b); p[k].x=i; p[k].y=j; p[k].w=b; k++; } } qsort(p,k,sizeof(p[0]),cmp); int ans; for(i=0;i<k;i++) { int x=find(p[i].x); int y=find(p[i].y); if(x!=y) { f[x]=y; ans=p[i].w; } } printf("%d\n",ans); } }