#include <iostream>
#include <vector>
#include <queue>
 
using namespace std;
 
int main(){
    int n=0,clan=0,min=0,i=0,m=0,x=0,b=0,y=0,komponenta=0;
    vector <int> grad[100001];
    queue <int> q;  
    scanf("%d%d",&n,&m);
   
    int bio[100001];
    for( int i=0; i<100001; i++) bio[i]=0;
    for (i=0; i<n; i++){
        scanf("%d%d", &x, &y);
        grad[x].push_back(y);
        grad[y].push_back(x);
    }
   
    for (int j=1; j<= m; j++){
        if (bio[j]==0){
              clan++;
              q.push(j); bio[j]=1;
              while ( !q.empty() ){
                    x=q.front();
                    q.pop();
                    for (i=0; i < grad[x].size(); i++){
                        b = grad[x][i];
                        if (bio[b] == 0){
                           clan++;
                           q.push(b);
                           bio[b]=1;
                           
                        }
         
                    }
   
              }
             
        }
        if (clan > min) min = clan;
        clan = 0;
    }
   
   
printf("%d", min);    
//system ("pause");
return 0;
}
