#include <bits/stdc++.h>
using namespace std;
int find_root(int x, vector<int> &p){
if(p[x] == -1) return x;
else{
p[x] = find_root(p[x], p);
return p[x];
}
}
signed main(){
ios::sync_with_stdio(false);
int n, m;
while(cin >> n >> m){
int mx = 1;
vector<int> I_am_your_father(n, -1);
vector<int> len(n, 1);
for(int i = 0; i < m; i++){
int a, b;
cin >> a >> b;
int root_a = find_root(a, I_am_your_father);
int root_b = find_root(b, I_am_your_father);
if(root_a != root_b){
len[root_a] += len[root_b];
I_am_your_father[root_b] = root_a;
mx = max(mx, len[root_a]);
}
}
// for(int i = 0; i < n; i++){
// cout << I_am_your_father[i] << " ";
// }cout << endl;
cout << mx << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBmaW5kX3Jvb3QoaW50IHgsIHZlY3RvcjxpbnQ+ICZwKXsKCWlmKHBbeF0gPT0gLTEpIHJldHVybiB4OwoJZWxzZXsKCQlwW3hdID0gZmluZF9yb290KHBbeF0sIHApOwoJCXJldHVybiBwW3hdOwoJfQp9CnNpZ25lZCBtYWluKCl7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CglpbnQgbiwgbTsKCQoJd2hpbGUoY2luID4+IG4gPj4gbSl7CgkJaW50IG14ID0gMTsKCQl2ZWN0b3I8aW50PiBJX2FtX3lvdXJfZmF0aGVyKG4sIC0xKTsKCQl2ZWN0b3I8aW50PiBsZW4obiwgMSk7IAoJCWZvcihpbnQgaSA9IDA7IGkgPCBtOyBpKyspewoJCQlpbnQgYSwgYjsKCQkJY2luID4+IGEgPj4gYjsKCQkJaW50IHJvb3RfYSA9IGZpbmRfcm9vdChhLCBJX2FtX3lvdXJfZmF0aGVyKTsKCQkJaW50IHJvb3RfYiA9IGZpbmRfcm9vdChiLCBJX2FtX3lvdXJfZmF0aGVyKTsKCQkJaWYocm9vdF9hICE9IHJvb3RfYil7CgkJCQlsZW5bcm9vdF9hXSArPSBsZW5bcm9vdF9iXTsKCQkJCUlfYW1feW91cl9mYXRoZXJbcm9vdF9iXSA9IHJvb3RfYTsgCgkJCQlteCA9IG1heChteCwgbGVuW3Jvb3RfYV0pOwoJCQl9CgkJfQoJCS8vIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewoJCS8vIAljb3V0IDw8IElfYW1feW91cl9mYXRoZXJbaV0gPDwgIiAiOwoJCS8vIH1jb3V0IDw8IGVuZGw7IAoJCWNvdXQgPDwgbXggPDwgZW5kbDsgCgoJCQoJCQoJfQp9