#include #include #include #include #include #include #include #include #include #include #include #include #define maxn 206 using namespace std; typedef long long ll; int tot,first[maxn],n,m,vis[maxn]; struct edge{ int next,to,idx; }e[maxn]; int q[1111111]; struct node{ int c,d; }a[maxn]; int pos[1000]; int check(int idx) { int i,j; for(i=1;i<=n;i++)vis[i]=0; int front,rear; front=1;rear=1; q[rear]=1; vis[1]=1; int t=1; while(front<=rear){ int x=q[front]; front++; for(i=first[x];i!=-1;i=e[i].next){ if(e[i].idx==idx)continue; int v=e[i].to; if(vis[v])continue; vis[v]=1;t++; rear++; q[rear]=v; } } if(t==n)return 1; return 0; } int check(int idx1,int idx2) { int i,j; for(i=1;i<=n;i++)vis[i]=0; int front,rear; front=1;rear=1; q[rear]=1; vis[1]=1; int t=1; while(front<=rear){ int x=q[front]; front++; for(i=first[x];i!=-1;i=e[i].next){ if((e[i].idx==idx1) || (e[i].idx==idx2) )continue; int v=e[i].to; if(vis[v])continue; vis[v]=1;t++; rear++; q[rear]=v; } } if(t==n)return 1; return 0; } int main() { int m,i,j,T,tot,c,d; scanf("%d",&T); while(T--) { scanf("%d",&n); m=n+1; tot=0; for(i=1;i<=n;i++)first[i]=-1; int num=0; for(i=1;i<=m;i++){ scanf("%d%d",&a[i].c,&a[i].d); num++;pos[num]=a[i].c; num++;pos[num]=a[i].d; } sort(pos+1,pos+1+num); num=unique(pos+1,pos+1+num)-pos-1; for(i=1;i<=m;i++){ c=lower_bound(pos+1,pos+1+num,a[i].c)-pos; d=lower_bound(pos+1,pos+1+num,a[i].d)-pos; tot++; e[tot].next=first[c];e[tot].to=d;e[tot].idx=i; first[c]=tot; tot++; e[tot].next=first[d];e[tot].to=c;e[tot].idx=i; first[d]=tot; } int ans=0; for(i=1;i<=m;i++){ if(check(i))ans++; } for(i=1;i<=m;i++){ for(j=i+1;j<=m;j++){ if(check(i,j))ans++; } } printf("%d\n",ans); } return 0; }