#include<iostream>
#include<set>
using namespace std;
const int maxn = 5e4+10;
int pre[maxn];
int find(int x){//return par[x]==x?x:par[x]=Find(par[x]);
int son=x;
while(x!=pre[x]){
x=pre[x];
}
while(x!=son){
int tmp=pre[son];
pre[son]=x;
son=tmp;
}
return x;
}
void join(int x,int y){
int fx=find(x),fy=find(y);
if(fx!=fy) pre[fx]=fy;
}
int main(){
int t,n,m,a,b;
set <int> se;
cin>>t;
while(t--){
se.clear();
cin>>n>>m;
for(int i=1;i<=n;i++) pre[i]=i;
while(m--){
cin>>a>>b;
if(find(a)!=find(b))
join(a,b);
}
for(int i=1;i<=n;i++)
se.insert(find(i));
cout<<se.size()<<endl;
}
return 0;
}