#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());
DFS(R - 1, 1, graph, visited, order);
for (int i = 0; i < N; i++)
cout << order[i] << "\n";
delete[] graph;
delete[] order;
delete[] visited;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgREZTKGludCBzdGFydCwgaW50IGNvdW50LCB2ZWN0b3I8aW50PiogdmVjLCBib29sKiB2aXNpdGVkLCBpbnQqIG9yZGVyKSB7Cgl2aXNpdGVkW3N0YXJ0XSA9IHRydWU7CglvcmRlcltzdGFydF0gPSBjb3VudDsKCglmb3IgKGludCBpID0gMDsgaSA8IHZlY1tzdGFydF0uc2l6ZSgpOyBpKyspIHsKCQlpbnQgbmV4dCA9IHZlY1tzdGFydF1baV07CgoJCWlmICghdmlzaXRlZFtuZXh0XSkgewoJCQljb3VudCsrOwoJCQlERlMobmV4dCwgY291bnQsIHZlYywgdmlzaXRlZCwgb3JkZXIpOwoJCX0KCgl9Cn0KCmludCBtYWluKCkgewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKE5VTEwpOwoJY291dC50aWUoTlVMTCk7CgoJaW50IE4sIE0sIFI7CgljaW4gPj4gTiA+PiBNID4+IFI7CgoJdmVjdG9yPGludD4qIGdyYXBoID0gbmV3IHZlY3RvcjxpbnQ+W05dOwoJaW50KiBvcmRlciA9IG5ldyBpbnRbTl0oKTsKCWJvb2wqIHZpc2l0ZWQgPSBuZXcgYm9vbFtOXSgpOwoKCXdoaWxlIChNLS0pIHsKCQlpbnQgdSwgdjsKCQljaW4gPj4gdSA+PiB2OwoJCWdyYXBoW3UgLSAxXS5wdXNoX2JhY2sodiAtIDEpOwoJCWdyYXBoW3YgLSAxXS5wdXNoX2JhY2sodSAtIDEpOwoJfQoKCWZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQoJCXNvcnQoZ3JhcGhbaV0uYmVnaW4oKSwgZ3JhcGhbaV0uZW5kKCkpOwoKCURGUyhSIC0gMSwgMSwgZ3JhcGgsIHZpc2l0ZWQsIG9yZGVyKTsKCglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKCQljb3V0IDw8IG9yZGVyW2ldIDw8ICJcbiI7CgoJZGVsZXRlW10gZ3JhcGg7CglkZWxldGVbXSBvcmRlcjsKCWRlbGV0ZVtdIHZpc2l0ZWQ7CgoJcmV0dXJuIDA7Cn0=