#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void DFS(int start, int& count, vector<int>* vec, bool* visited, int* order) {
visited[start] = true;
order[start] = count;
for (int i = 0; i < vec[start].size(); i++) {
int next = vec[start][i];
if (!visited[next]) {
count++;
DFS(next, count, vec, visited, order);
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M, R;
cin >> N >> M >> R;
vector<int>* graph = new vector<int>[N];
int* order = new int[N]();
bool* visited = new bool[N]();
while (M--) {
int u, v;
cin >> u >> v;
graph[u - 1].push_back(v - 1);
graph[v - 1].push_back(u - 1);
}
for (int i = 0; i < N; i++)
sort(graph[i].begin(), graph[i].end());
int count = 1;
DFS(R - 1, count, graph, visited, order);
for (int i = 0; i < N; i++)
cout << order[i] << "\n";
delete[] graph;
delete[] order;
delete[] visited;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgREZTKGludCBzdGFydCwgaW50JiBjb3VudCwgdmVjdG9yPGludD4qIHZlYywgYm9vbCogdmlzaXRlZCwgaW50KiBvcmRlcikgewoJdmlzaXRlZFtzdGFydF0gPSB0cnVlOwoJb3JkZXJbc3RhcnRdID0gY291bnQ7CgoJZm9yIChpbnQgaSA9IDA7IGkgPCB2ZWNbc3RhcnRdLnNpemUoKTsgaSsrKSB7CgkJaW50IG5leHQgPSB2ZWNbc3RhcnRdW2ldOwoKCQlpZiAoIXZpc2l0ZWRbbmV4dF0pIHsKCQkJY291bnQrKzsKCQkJREZTKG5leHQsIGNvdW50LCB2ZWMsIHZpc2l0ZWQsIG9yZGVyKTsKCQl9CgoJfQp9CgppbnQgbWFpbigpIHsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZShOVUxMKTsKCWNvdXQudGllKE5VTEwpOwoKCWludCBOLCBNLCBSOwoJY2luID4+IE4gPj4gTSA+PiBSOwoKCXZlY3RvcjxpbnQ+KiBncmFwaCA9IG5ldyB2ZWN0b3I8aW50PltOXTsKCWludCogb3JkZXIgPSBuZXcgaW50W05dKCk7Cglib29sKiB2aXNpdGVkID0gbmV3IGJvb2xbTl0oKTsKCgl3aGlsZSAoTS0tKSB7CgkJaW50IHUsIHY7CgkJY2luID4+IHUgPj4gdjsKCQlncmFwaFt1IC0gMV0ucHVzaF9iYWNrKHYgLSAxKTsKCQlncmFwaFt2IC0gMV0ucHVzaF9iYWNrKHUgLSAxKTsKCX0KCglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKCQlzb3J0KGdyYXBoW2ldLmJlZ2luKCksIGdyYXBoW2ldLmVuZCgpKTsKCglpbnQgY291bnQgPSAxOwoJREZTKFIgLSAxLCBjb3VudCwgZ3JhcGgsIHZpc2l0ZWQsIG9yZGVyKTsKCglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKCQljb3V0IDw8IG9yZGVyW2ldIDw8ICJcbiI7CgoJZGVsZXRlW10gZ3JhcGg7CglkZWxldGVbXSBvcmRlcjsKCWRlbGV0ZVtdIHZpc2l0ZWQ7CgoJcmV0dXJuIDA7Cn0=