#include <bits/stdc++.h>
#define ll long long
using namespace std;

struct node {
    bool visited;
    vector<ll> adj;
};

void explore(vector<node> &graph, ll u) {
    graph[u].visited = true;
    for(ll i=0; i<graph[u].adj.size(); i++) {
        ll v = graph[u].adj[i];
        if(!graph[v].visited) {
            explore(graph,v);
        }
    }
}

void dfs(vector<node> &graph, ll n) {
    for(ll i=1; i<=n; i++) {
        if(!graph[i].visited) {
            explore(graph,i);
        }
    }
}

int main() {
    ll n,e,i,s,u,v,d;
    cin>>n>>e;
    vector<node> graph(n+1);
    for(i=0;i<n;i++) {
        graph[i].visited = false;
    }
    for(i=0;i<e;i++) {
        cin>>u>>v;
        graph[u].adj.push_back(v);
        graph[v].adj.push_back(u);
    }
    dfs(graph,n);
    return 0;
}