#include<bits/stdc++.h>
using namespace std;
vector <int> adj[100001];
int vis[100001];
void initialise(){
memset(vis,0,100001);
for (int i = 0; i < 100001; i++){
adj[i].clear();
}
}
void addEdges(int u, int v){
adj[u].push_back(v);
adj[v].push_back(u);
}
void dfs(int v){
vis[v] = 1;
for (auto child : adj[v]){
if (!vis[child]){
dfs(child);
}
}
}
int main(){
int T; cin >> T;
while (T--){
int N,M;
cin >> N >> M;
while(M--){
int u,v;
cin >> u >> v;
addEdges(u,v);
int cc = 0;
for (int i=1; i<=N; i++){
if (vis[i] == 0){
dfs(i), cc++;
}
}
cout << cc <<"\n";
initialise();
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvciA8aW50PiBhZGpbMTAwMDAxXTsKaW50IHZpc1sxMDAwMDFdOwoKdm9pZCBpbml0aWFsaXNlKCl7CiAgbWVtc2V0KHZpcywwLDEwMDAwMSk7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDE7IGkrKyl7CiAgIGFkaltpXS5jbGVhcigpOwogIH0KfQoKdm9pZCBhZGRFZGdlcyhpbnQgdSwgaW50IHYpewogIGFkalt1XS5wdXNoX2JhY2sodik7CiAgYWRqW3ZdLnB1c2hfYmFjayh1KTsKfQoKdm9pZCBkZnMoaW50IHYpewogIHZpc1t2XSA9IDE7CiAgZm9yIChhdXRvIGNoaWxkIDogYWRqW3ZdKXsKICAgIGlmICghdmlzW2NoaWxkXSl7CiAgICAgIGRmcyhjaGlsZCk7CiAgICB9CiAgfQp9CgppbnQgbWFpbigpewogIGludCBUOyBjaW4gPj4gVDsKICB3aGlsZSAoVC0tKXsKICAgIGludCBOLE07CiAgICBjaW4gPj4gTiA+PiBNOwogICAgd2hpbGUoTS0tKXsKICAgICAgaW50IHUsdjsKICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgYWRkRWRnZXModSx2KTsKICAgICAgaW50IGNjID0gMDsKICAgICAgZm9yIChpbnQgaT0xOyBpPD1OOyBpKyspewogICAgICAgIGlmICh2aXNbaV0gPT0gMCl7CiAgICAJCQlkZnMoaSksIGNjKys7CiAgICAJCX0KICAgICAgfQogICAgICBjb3V0IDw8IGNjIDw8IlxuIjsKICAgICAgaW5pdGlhbGlzZSgpOwogICAgfQogIH0KfQo=