#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> ke[1001];
bool visited[1001];
int ans = 0 ;
void inp(){
cin >> n >> m ;
for(int i = 1 ; i <= m ; i ++){
int x,y;
cin >> x >> y;
ke[x].push_back(y);
ke[y].push_back(x);
}
}
void DFS(int u){
visited[u] = true;
for(int x : ke[u]){
if(!visited[x]){
DFS(x);
}
}
ans++;
}
int main(){
inp();
int _max = INT_MIN;
for(int i = 1 ; i <= n ; i++){
ans = 0 ;
DFS(i);
_max = max(_max,ans);
}
cout << _max;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sbTsKdmVjdG9yPGludD4ga2VbMTAwMV07CmJvb2wgdmlzaXRlZFsxMDAxXTsKaW50IGFucyA9IDAgOwp2b2lkIGlucCgpewogICAgY2luID4+IG4gPj4gbSA7CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBtIDsgaSArKyl7CiAgICAgICAgaW50IHgseTsKICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgIGtlW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBrZVt5XS5wdXNoX2JhY2soeCk7CiAgICB9Cn0Kdm9pZCBERlMoaW50IHUpewogICAgdmlzaXRlZFt1XSA9IHRydWU7CiAgICBmb3IoaW50IHggOiBrZVt1XSl7CiAgICAgICAgaWYoIXZpc2l0ZWRbeF0pewogICAgICAgICAgICBERlMoeCk7CiAgICAgICAgfQogICAgfQogICAgYW5zKys7Cn0KaW50IG1haW4oKXsKICAgIGlucCgpOwogICAgaW50IF9tYXggPSBJTlRfTUlOOwogICAgZm9yKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKyl7CiAgICAgICAgYW5zID0gMCA7CiAgICAgICAgREZTKGkpOwogICAgICAgIF9tYXggPSBtYXgoX21heCxhbnMpOwogICAgfQogICAgY291dCA8PCBfbWF4Owp9Cg==