/**
UVa 10608 - Friends
并查集 模版题
*/
#include <iostream>
#include <cstring>
using namespace std;
const int MAX_N = 30000 + 1000;
int N,M;
int x,y;
int T;
int p[MAX_N];
int cnt[MAX_N];
int _max;
int u,v;
int Find(int x)
{
return p[x] == x ? x : (p[x] = Find(p[x]));
}
void Union(int u,int v)
{
p[u] = v;
}
int main()
{
cin>>T;
while(T--)
{
memset(cnt,0,sizeof(cnt));
cin>>N>>M;
int i;
for(i = 1; i <= N; i++)
p[i] = i;
for(i = 0; i < M; i++)
{
cin>>x>>y;
u = Find(x);
v = Find(y);
if(u != v)
Union(u,v);
}
for(i = 1; i <= N; i++)
cnt[Find(i)]++;
_max = 0;
for(i = 1; i<= N; i++)
{
if(cnt[i] > _max)
_max = cnt[i];
}
cout<<_max<<endl;
}
return 0;
}