#include <cstdio>
#include <vector>
using namespace std;
#define MAX 10
#define DFS_BLACK 1
#define DFS_WHITE -1
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
vi dfs_num;
vector<vii> adj(MAX);
void dfs(int u) {
dfs_num[u] = DFS_BLACK;
for (int i = 0; i < (int)adj[u].size(); i++) {
ii v = adj[u][i];
if (dfs_num[v.first] == DFS_WHITE)
dfs(v.first);
}
printf(" %d", u);
}
int main() {
int v, e, x, y;
scanf("%d %d", &v, &e);
for (int i = 0; i < e; i++) {
scanf("%d %d", &x, &y);
adj[x].push_back(ii(y, 1));
adj[y].push_back(ii(x, 1));
}
int numCC = 0;
dfs_num.assign(v, DFS_WHITE);
for (int i = 0; i < v; i++)
if (dfs_num[i] == DFS_WHITE)
printf("Component %d:", ++numCC), dfs(i), printf("\n");
printf("There are %d connected components\n", numCC);
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgTUFYIDEwCiNkZWZpbmUgREZTX0JMQUNLIDEKI2RlZmluZSBERlNfV0hJVEUgLTEKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsKdHlwZWRlZiB2ZWN0b3I8aWk+IHZpaTsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKCnZpIGRmc19udW07CnZlY3Rvcjx2aWk+IGFkaihNQVgpOwoKdm9pZCBkZnMoaW50IHUpIHsKICAgIGRmc19udW1bdV0gPSBERlNfQkxBQ0s7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpYWRqW3VdLnNpemUoKTsgaSsrKSB7CiAgICAgICAgaWkgdiA9IGFkalt1XVtpXTsKICAgICAgICBpZiAoZGZzX251bVt2LmZpcnN0XSA9PSBERlNfV0hJVEUpCiAgICAgICAgICAgIGRmcyh2LmZpcnN0KTsKICAgIH0KICAgIHByaW50ZigiICVkIiwgdSk7Cn0KCmludCBtYWluKCkgewogICAgaW50IHYsIGUsIHgsIHk7CgogICAgc2NhbmYoIiVkICVkIiwgJnYsICZlKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZTsgaSsrKSB7CiAgICAgICAgc2NhbmYoIiVkICVkIiwgJngsICZ5KTsKICAgICAgICBhZGpbeF0ucHVzaF9iYWNrKGlpKHksIDEpKTsKICAgICAgICBhZGpbeV0ucHVzaF9iYWNrKGlpKHgsIDEpKTsKICAgIH0KCiAgICBpbnQgbnVtQ0MgPSAwOwogICAgZGZzX251bS5hc3NpZ24odiwgREZTX1dISVRFKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdjsgaSsrKQogICAgICAgIGlmIChkZnNfbnVtW2ldID09IERGU19XSElURSkKICAgICAgICAgICAgcHJpbnRmKCJDb21wb25lbnQgJWQ6IiwgKytudW1DQyksIGRmcyhpKSwgcHJpbnRmKCJcbiIpOwogICAgcHJpbnRmKCJUaGVyZSBhcmUgJWQgY29ubmVjdGVkIGNvbXBvbmVudHNcbiIsIG51bUNDKTsKfQo=