int bb[1010],th[1010],ans=-1;
int max(int x,int y){return x>y?x:y;}
int zbb(int a)
{
if(bb[a]==a)
return a;
else
{
bb[a]=zbb(bb[a]);
return bb[a];
}
}
void chz(int a,int b)
{
int x=zbb(a);
int y=zbb(b);
if(x!=y) bb[y]=x;
if(x==y) return;
th[x]+=th[y];
ans=max(ans,th[x]);
}
int main()
{
int n,m;scanf("%d %d",&n,&m);
for(int i=1;i<=1010;i++)
{
bb[i]=i;th[i]=1;
}
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d %d",&x,&y);
chz(x,y);
}
printf("%d",ans);
return 0;
}
int n,m,fa[1001],v[1001];
int findfa(int x)
{
if(x==fa[x]) return x;
return fa[x]=findfa(fa[x]);
}
void change(int x,int y)
{
int a=findfa(x),b=findfa(y);
fa[a]=b;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
fa[i]=i;
v[i]=0;
}
for(int i=1;i<=m;i++)
{
int a,b; scanf("%d %d",&a,&b);
change(a,b);
}
int max=0;
for(int i=1;i<=n;++i)
{
int x=findfa(fa[i]);
if(++v[x]>max) max=v[x];
}
printf("%d",max);
return 0;
}