#include <bits/stdc++.h>
using namespace std;
#include <atcoder/all>
using namespace atcoder;
#define ll long long
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
using mint = modint998244353;
#define ull unsigned long long
random_device rnd;
mt19937 mt(rnd());
int RandInt(int a, int b) {
    return a + mt() % (b - a + 1);
}

int main() {
    int N, M;
    cin >> N >> M;
    vector<vector<int>> to(N + 1);
    for (int i = 0; i < M; ++i) {
        int u, v;
        cin >> u >> v;
        to[u].push_back(v);
        to[v].push_back(u);
    }
    vector<int> dist(N + 1, -1);
    queue<int> q;
    q.push(1);
    dist[1] = 0;
    int max_dist = 0;
    while (!q.empty()) {
        int u = q.front(); q.pop();
        for (int v : to[u]) {
            if (dist[v] == -1) {
                dist[v] = dist[u] + 1;
                max_dist = max(max_dist, dist[v]);
                q.push(v);
            }
        }
    }
    vector<int> cnt(max_dist + 1, 0);
    for (int i = 1; i <= N; ++i) {
        if (dist[i] != -1) {
            cnt[dist[i]]++;
        }
    }
    vector<int> sum_even(max_dist + 2, 0), sum_odd(max_dist + 2, 0);
    for (int d = 0; d <= max_dist; ++d) {
        if (d % 2 == 0) {
            sum_even[d + 1] = sum_even[d] + cnt[d];
            sum_odd[d + 1] = sum_odd[d];
        } else {
            sum_even[d + 1] = sum_even[d];
            sum_odd[d + 1] = sum_odd[d] + cnt[d];
        }
    }
    vector<int> total_black(N + 1, 0);
    for (int t = 1; t <= N; ++t) {
        int min_d = min(t, max_dist);
        if (t % 2 == 0) {
            total_black[t] = sum_even[min_d + 1];
        } else {
            total_black[t] = sum_odd[min_d + 1];
        }
    }
    for (int t = 1; t <= N; ++t) {
        cout << total_black[t] << endl;
    }
    return 0;
}