#include<iostream>
#include<map>
#include<vector>
using namespace std;
struct tnode {
tnode *parent;
int data;
int circlesize;
};
int main(void) {
int N;
cin >> N;
for (int i = 0; i < N; i++) {
int n, m;
cin >> n >> m;
map<int, tnode*> member;;
for (int j = 1; j < n+1; j++) {
tnode *tmp;
tmp = new tnode;
tmp->data = j;
tmp->parent = tmp;
tmp->circlesize = 1;
member[j] = tmp;
}
for (int j = 0; j < m; j++) {
int a, b;
cin >> a >> b;
if (member[a]->circlesize > member[b]->circlesize) {
member[b]->parent = member[a];
member[a]->circlesize += 1;
}
else {
member[a]->parent = member[b];
member[b]->circlesize += 1;
}
}
int ans;
ans = member[1]->circlesize;
for (int j = 2; j < n + 1; j++) {
if (ans < member[j]->circlesize) {
ans = member[j]->circlesize;
}
}
cout << ans << endl;
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPG1hcD4KI2luY2x1ZGU8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCB0bm9kZSB7Cgl0bm9kZSAqcGFyZW50OwoJaW50IGRhdGE7CglpbnQgY2lyY2xlc2l6ZTsKfTsKCmludCBtYWluKHZvaWQpIHsKCWludCBOOwoJY2luID4+IE47Cglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewoJCWludCBuLCBtOwoJCWNpbiA+PiBuID4+IG07CgkJbWFwPGludCwgdG5vZGUqPiBtZW1iZXI7OwoJCWZvciAoaW50IGogPSAxOyBqIDwgbisxOyBqKyspIHsKCQkJdG5vZGUgKnRtcDsKCQkJdG1wID0gbmV3IHRub2RlOwoJCQl0bXAtPmRhdGEgPSBqOwoJCQl0bXAtPnBhcmVudCA9IHRtcDsKCQkJdG1wLT5jaXJjbGVzaXplID0gMTsKCQkJbWVtYmVyW2pdID0gdG1wOwoJCX0KCQlmb3IgKGludCBqID0gMDsgaiA8IG07IGorKykgewoJCQlpbnQgYSwgYjsKCQkJY2luID4+IGEgPj4gYjsKCQkJaWYgKG1lbWJlclthXS0+Y2lyY2xlc2l6ZSA+IG1lbWJlcltiXS0+Y2lyY2xlc2l6ZSkgewoJCQkJbWVtYmVyW2JdLT5wYXJlbnQgPSBtZW1iZXJbYV07CgkJCQltZW1iZXJbYV0tPmNpcmNsZXNpemUgKz0gMTsKCQkJfQoJCQllbHNlIHsKCQkJCW1lbWJlclthXS0+cGFyZW50ID0gbWVtYmVyW2JdOwoJCQkJbWVtYmVyW2JdLT5jaXJjbGVzaXplICs9IDE7CgkJCX0KCQl9CgkJaW50IGFuczsKCQlhbnMgPSBtZW1iZXJbMV0tPmNpcmNsZXNpemU7CgkJZm9yIChpbnQgaiA9IDI7IGogPCBuICsgMTsgaisrKSB7CgkJCWlmIChhbnMgPCBtZW1iZXJbal0tPmNpcmNsZXNpemUpIHsKCQkJCWFucyA9IG1lbWJlcltqXS0+Y2lyY2xlc2l6ZTsKCQkJfQoJCX0KCQljb3V0IDw8IGFucyA8PCBlbmRsOwoJfQp9