#include #include using namespace std; const int N=1110; struct Edge {int y,ne,id;}; int cas,n,num,pd1,pd2,cnt,ans; int v[N]; Edge e[N*2];int last[N]; void add(int i,int x,int y) { e[++num]=(Edge){y,last[x],i};last[x]=num;} void dfs(int i) { v[i]=1;cnt++; for (int j=last[i];j;j=e[j].ne) { if (e[j].id==pd1) continue; if (e[j].id==pd2) continue; if (v[e[j].y]) continue; dfs(e[j].y); } } int main() { scanf("%d",&cas); while (cas--) { scanf("%d",&n);num=0;ans=0; for (int i=1;i<=n;i++) last[i]=0; for (int i=1;i<=n+1;i++) { int x,y; scanf("%d%d",&x,&y); add(i,x,y); add(i,y,x); } for (int i=1;i<=n+1;i++) { pd1=i;pd2=0; cnt=0; for (int j=1;j<=n;j++) v[j]=0; dfs(1); if (cnt==n) ans++; } for (int i=1;i<=n;i++) for (int j=i+1;j<=n+1;j++) { pd1=i,pd2=j; cnt=0; for (int j=1;j<=n;j++) v[j]=0; dfs(1); if (cnt==n) ans++; } printf("%d\n",ans); } return 0; }