#include <bits/stdc++.h>
using namespace std;
int vis[100001];
vector<int> adj[100001];
void dfs( int node)
{
vis[node]=1;
for( int child: adj[node])
{
if( vis[child]==0)
{
dfs(child);
}
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n, m;
cin>>n>>m;
for( int i=1;i<=m;i++)
{
int a,b;
cin>> a>> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
int cc=0;
for( int i=1;i<=n;i++)
{
if( vis[i]==0)
{
dfs(i);
cc++;
}
}
cout<<cc<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAogaW50IHZpc1sxMDAwMDFdOwogICB2ZWN0b3I8aW50PiBhZGpbMTAwMDAxXTsKICB2b2lkIGRmcyggaW50IG5vZGUpCiAgewogIAkgdmlzW25vZGVdPTE7CiAgCSBmb3IoIGludCBjaGlsZDogYWRqW25vZGVdKQogIAkgewogIAkgCWlmKCB2aXNbY2hpbGRdPT0wKQogIAkgCXsKICAJIAkJZGZzKGNoaWxkKTsKICAJIAl9CiAgCSB9CiAgfQoKaW50IG1haW4oKSAKewoJIGludCB0OwoJICBjaW4+PnQ7CgkgICB3aGlsZSh0LS0pCgkgICB7CgkgICAJaW50IG4sIG07CgkgICAJIGNpbj4+bj4+bTsKCSAgIAkgIGZvciggaW50IGk9MTtpPD1tO2krKykKCSAgIAkgIHsKCSAgIAkgIAkgaW50IGEsYjsKCSAgIAkgIAkgY2luPj4gYT4+IGI7CgkgICAJICAJIGFkalthXS5wdXNoX2JhY2soYik7CgkgICAJICAJIGFkaltiXS5wdXNoX2JhY2soYSk7CgkgICAJICB9IAoJICAgCSAgIGludCBjYz0wOwoJICAgCSAgZm9yKCBpbnQgaT0xO2k8PW47aSsrKQoJICAgCSAgewoJICAgCSAgCSBpZiggdmlzW2ldPT0wKQoJICAgCSAgCSB7CgkgICAJICAJIAkgZGZzKGkpOwoJICAgCSAgCSAgY2MrKzsKCSAgIAkgIAkgfQoJICAgCSAgCSAKCSAgIAkgIH0KCSAgIAkgY291dDw8Y2M8PGVuZGw7CgkgICB9CglyZXR1cm4gMDsKfQ==