import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
int n
= Integer.
parseInt(tokenizer.
nextToken()); int k
= Integer.
parseInt(tokenizer.
nextToken()); int[] cows = new int[n + 1];
List
<Integer
>[] viewed
= new List[n
+ 1]; for (int j = 1; j <= n; j++) {
cows[j] = j;
viewed[j] = new ArrayList<>();
viewed[j].add(j);
}
for (long t = 1; t <= k; t++) {
int a
= Integer.
parseInt(tokenizer.
nextToken()); int b
= Integer.
parseInt(tokenizer.
nextToken()); int c = cows[a];
int d = cows[b];
cows[a] = d;
cows[b] = c;
viewed[cows[a]].add(a);
viewed[cows[b]].add(b);
}
int[] answer = new int[n + 1];
for (int r = 1; r <= n; r++) {
if (cows[r] != 0) {
List<Integer> cycle = new ArrayList<>();
int j = r;
while (cows[j] != 0) {
cycle.add(j);
j = cows[j];
cows[cycle.get(cycle.size() - 1)] = 0;
}
Set<Integer> viewedHere = new HashSet<>();
for (int cow : cycle) {
viewedHere.addAll(viewed[cow]);
}
for (int cow : cycle) {
answer[cow] = viewedHere.size();
}
}
}
StringBuilder out = new StringBuilder();
for (int j = 1; j <= n; j++) {
out.append(answer[j]).append('\n');
}
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEudXRpbC4qOwogCnB1YmxpYyBjbGFzcyBNYWluIHsKIAogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICBCdWZmZXJlZFJlYWRlciBpbiA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgU3RyaW5nVG9rZW5pemVyIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoaW4ucmVhZExpbmUoKSk7CiAgICAgICAgaW50IG4gPSBJbnRlZ2VyLnBhcnNlSW50KHRva2VuaXplci5uZXh0VG9rZW4oKSk7CiAgICAgICAgaW50IGsgPSBJbnRlZ2VyLnBhcnNlSW50KHRva2VuaXplci5uZXh0VG9rZW4oKSk7CiAgICAgICAgaW50W10gY293cyA9IG5ldyBpbnRbbiArIDFdOwogICAgICAgIExpc3Q8SW50ZWdlcj5bXSB2aWV3ZWQgPSBuZXcgTGlzdFtuICsgMV07CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKSB7CiAgICAgICAgICAgIGNvd3Nbal0gPSBqOwogICAgICAgICAgICB2aWV3ZWRbal0gPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICAgICAgdmlld2VkW2pdLmFkZChqKTsKICAgICAgICB9CiAgICAgICAgZm9yIChsb25nIHQgPSAxOyB0IDw9IGs7IHQrKykgewogICAgICAgICAgICB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGluLnJlYWRMaW5lKCkpOwogICAgICAgICAgICBpbnQgYSA9IEludGVnZXIucGFyc2VJbnQodG9rZW5pemVyLm5leHRUb2tlbigpKTsKICAgICAgICAgICAgaW50IGIgPSBJbnRlZ2VyLnBhcnNlSW50KHRva2VuaXplci5uZXh0VG9rZW4oKSk7CiAgICAgICAgICAgIGludCBjID0gY293c1thXTsKICAgICAgICAgICAgaW50IGQgPSBjb3dzW2JdOwogICAgICAgICAgICBjb3dzW2FdID0gZDsKICAgICAgICAgICAgY293c1tiXSA9IGM7CiAgICAgICAgICAgIHZpZXdlZFtjb3dzW2FdXS5hZGQoYSk7CiAgICAgICAgICAgIHZpZXdlZFtjb3dzW2JdXS5hZGQoYik7CiAgICAgICAgfQogICAgICAgIGludFtdIGFuc3dlciA9IG5ldyBpbnRbbiArIDFdOwogICAgICAgIGZvciAoaW50IHIgPSAxOyByIDw9IG47IHIrKykgewogICAgICAgICAgICBpZiAoY293c1tyXSAhPSAwKSB7CiAgICAgICAgICAgICAgICBMaXN0PEludGVnZXI+IGN5Y2xlID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgICAgICAgICBpbnQgaiA9IHI7CiAgICAgICAgICAgICAgICB3aGlsZSAoY293c1tqXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgY3ljbGUuYWRkKGopOwogICAgICAgICAgICAgICAgICAgIGogPSBjb3dzW2pdOwogICAgICAgICAgICAgICAgICAgIGNvd3NbY3ljbGUuZ2V0KGN5Y2xlLnNpemUoKSAtIDEpXSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBTZXQ8SW50ZWdlcj4gdmlld2VkSGVyZSA9IG5ldyBIYXNoU2V0PD4oKTsKICAgICAgICAgICAgICAgIGZvciAoaW50IGNvdyA6IGN5Y2xlKSB7CiAgICAgICAgICAgICAgICAgICAgdmlld2VkSGVyZS5hZGRBbGwodmlld2VkW2Nvd10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChpbnQgY293IDogY3ljbGUpIHsKICAgICAgICAgICAgICAgICAgICBhbnN3ZXJbY293XSA9IHZpZXdlZEhlcmUuc2l6ZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFN0cmluZ0J1aWxkZXIgb3V0ID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBuOyBqKyspIHsKICAgICAgICAgICAgb3V0LmFwcGVuZChhbnN3ZXJbal0pLmFwcGVuZCgnXG4nKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludChvdXQpOwogICAgfQp9