#include<bits/stdc++.h>
using namespace std;
#define scan(a) scanf("%d",&a)
#define r5 100005
#define f(i,a,b) for(i=a;i<b;i++)
#define print(a) printf("%d\n",a)
#define pb push_back
#define nl printf("\n");
#define inf INT_MAX
typedef long long int lli;
typedef pair<int,int> ii;
bool visited[r5];
vector<int> adj[r5];
void dfs(int v){
visited[v]=true;
vector<int>::iterator it;
for(it=adj[v].begin();it!=adj[v].end();it++){
if(!visited[*it])
dfs(*it);
}
}
int main(){
int t;
scan(t);
while(t--){
int i,n,m;
f(i,0,r5){
adj[i].clear();
visited[i]=false;
}
scan(n);
scan(m);
int x,y;
f(i,0,m){
scan(x);
scan(y);
adj[x].push_back(y);
adj[y].push_back(x);
}
int ans=0;
f(i,1,n+1){
if(!visited[i]){
ans++;
dfs(i);
}
}
print(ans);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgc2NhbihhKSBzY2FuZigiJWQiLCZhKQojZGVmaW5lIHI1IDEwMDAwNQojZGVmaW5lIGYoaSxhLGIpIGZvcihpPWE7aTxiO2krKykKI2RlZmluZSBwcmludChhKSBwcmludGYoIiVkXG4iLGEpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbmwgcHJpbnRmKCJcbiIpOwojZGVmaW5lIGluZiBJTlRfTUFYCnR5cGVkZWYgbG9uZyBsb25nIGludCBsbGk7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBpaTsKCmJvb2wgdmlzaXRlZFtyNV07CnZlY3RvcjxpbnQ+IGFkaltyNV07Cgp2b2lkIGRmcyhpbnQgdil7Cgl2aXNpdGVkW3ZdPXRydWU7Cgl2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQ7Cglmb3IoaXQ9YWRqW3ZdLmJlZ2luKCk7aXQhPWFkalt2XS5lbmQoKTtpdCsrKXsKCQlpZighdmlzaXRlZFsqaXRdKQoJCWRmcygqaXQpOwoJfQp9CgppbnQgbWFpbigpewoJaW50IHQ7CglzY2FuKHQpOwoJd2hpbGUodC0tKXsKCQlpbnQgaSxuLG07CgkJZihpLDAscjUpewoJCQlhZGpbaV0uY2xlYXIoKTsKCQkJdmlzaXRlZFtpXT1mYWxzZTsKCQl9CgkJc2NhbihuKTsKCQlzY2FuKG0pOwoJCWludCB4LHk7CgkJZihpLDAsbSl7CgkJCXNjYW4oeCk7CgkJCXNjYW4oeSk7CgkJCWFkalt4XS5wdXNoX2JhY2soeSk7CgkJCWFkalt5XS5wdXNoX2JhY2soeCk7CgkJfQoJCWludCBhbnM9MDsKCQlmKGksMSxuKzEpewoJCQlpZighdmlzaXRlZFtpXSl7CgkJCQlhbnMrKzsKCQkJCWRmcyhpKTsKCQkJfQoJCX0KCQlwcmludChhbnMpOwoJfQoJcmV0dXJuIDA7Cn0=