// https://oj.uz/problem/view/EGOI23_ppp
#include<iostream>
#include<vector>
using namespace std;
#define winner first
#define loser second
typedef pair<int,int> pii;
vector<int> player_hold; // 玩家手上拿的medal群的祖先
vector<int> p;
int find(int x) {
if(p[x]<0) return x;
return p[x] = find(p[x]);
}
int uni(int a, int b) {
a = find(a);
b = find(b);
if(a == b) return -1;
if(p[a]>p[b]) swap(a, b);
p[a] += p[b];
p[b] = a;
return a;
}
int main() {
int N, M;
cin>>N>>M;
player_hold.assign(N, -1);
p.assign(N, -1);
vector<pii> event(M);
vector<int> ans(N, 0);
vector<vector<int>> cnt(M+1, vector<int>(2, 0));
for(int i=0; i<M; i++) {
int win, lose;
cin>>win>>lose;
event[i] = {win, lose};
}
for(int i=M-1; i>=0; i--) {
cnt[i] = cnt[i+1];
cnt[i][event[i].winner] = cnt[i+1][event[i].winner] + 1;
}
for(int i=0; i<M; i++) {
if(cnt[i][0] >= cnt[i][1]) ans[0]++;
else ans[1]++;
}
for(int i=0; i<N; i++) cout<<ans[i]<<' ';
}
// for(int medal = 0; medal<M; medal++) {
// vector<int> cnt(N, 0);
// int MAXN = N+1, MAX = 0;
// int now = event[medal].winner;
// cnt[now]++;
// MAXN = now;
// MAX = 1;
// for(int i = medal+1; i<M; i++) {
// if(event[i].loser!=now) {
// cnt[now]++;
// if(cnt[now] == MAX) MAXN = min(MAXN, now);
// else if(cnt[now] > MAX) {
// MAX = cnt[now];
// MAXN = now;
// }
// continue;
// }
// now = event[i].winner;
// cnt[now]++;
// if(cnt[now] == MAX) MAXN = min(MAXN, now);
// else if(cnt[now] > MAX) {
// MAX = cnt[now];
// MAXN = now;
// }
// }
// ans[MAXN]++;
// //cout<<"medal = "<<medal<<", winner = "<<MAXN<<"\n";
// }
// for(int i=0; i<M; i++) {
// int win, lose;
// cin>>win>>lose;
// event[i].winner = win;
// event[i].loser = lose;
// if(player_hold[win] == -1) player_hold[win] = i;
// else player_hold[win] = uni(player_hold[win], i);
// if(player_hold[lose] != -1) player_hold[win] = uni(player_hold[win], player_hold[lose]);
// }