#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
void solve() {
int n, m;
cin >> n >> m;
vector<vector<int>> G(n+1);
vector<bool> czy_odwiedzony(n+1, false);
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
int max_rozmiar = 0;
for (int i = 1; i <= n; i++) {
if (czy_odwiedzony[i]) {
continue;
}
queue<int> kol;
kol.push(i);
czy_odwiedzony[i] = true;
int akt_rozmiar = 1;
while (!kol.empty()) {
int v = kol.front();
kol.pop();
for (int sasiad: G[v]) {
if (!czy_odwiedzony[sasiad]) {
kol.push(sasiad);
czy_odwiedzony[sasiad] = true;
akt_rozmiar++;
}
}
}
max_rozmiar = max(max_rozmiar, akt_rozmiar);
}
cout << max_rozmiar << '\n';
}
int main() {
int d;
cin >> d;
for (int i = 0; i < d; i++) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgaW5mID0gMWU5OwoKdm9pZCBzb2x2ZSgpIHsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gRyhuKzEpOwogICAgdmVjdG9yPGJvb2w+IGN6eV9vZHdpZWR6b255KG4rMSwgZmFsc2UpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBHW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBHW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KCiAgICBpbnQgbWF4X3Jvem1pYXIgPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChjenlfb2R3aWVkem9ueVtpXSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHF1ZXVlPGludD4ga29sOwogICAgICAgIGtvbC5wdXNoKGkpOwogICAgICAgIGN6eV9vZHdpZWR6b255W2ldID0gdHJ1ZTsKICAgICAgICBpbnQgYWt0X3Jvem1pYXIgPSAxOwoKICAgICAgICB3aGlsZSAoIWtvbC5lbXB0eSgpKSB7CiAgICAgICAgICAgIGludCB2ID0ga29sLmZyb250KCk7CiAgICAgICAgICAgIGtvbC5wb3AoKTsKCiAgICAgICAgICAgIGZvciAoaW50IHNhc2lhZDogR1t2XSkgewogICAgICAgICAgICAgICAgaWYgKCFjenlfb2R3aWVkem9ueVtzYXNpYWRdKSB7CiAgICAgICAgICAgICAgICAgICAga29sLnB1c2goc2FzaWFkKTsKICAgICAgICAgICAgICAgICAgICBjenlfb2R3aWVkem9ueVtzYXNpYWRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBha3Rfcm96bWlhcisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBtYXhfcm96bWlhciA9IG1heChtYXhfcm96bWlhciwgYWt0X3Jvem1pYXIpOwogICAgfQoKICAgIGNvdXQgPDwgbWF4X3Jvem1pYXIgPDwgJ1xuJzsKfQoKaW50IG1haW4oKSB7CgogICAgaW50IGQ7CiAgICBjaW4gPj4gZDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZDsgaSsrKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCgogICAgcmV0dXJuIDA7Cn0K