#include<bits/stdc++.h>
using namespace std ;
#define F first
#define S second
const int N = 2e5+5 ;
const int M = 2e5+5 ;
int n , m , nxt[M] , vis[M] , ans[M] , anst[M] , cnt[N] , mp[N] ;
vector<pair<int,int>> vp ;
vector<int> v[N] , nei[M] ;
void dfs(int node){
vis[node]=1 ;
if(nxt[node]==-1) ans[node]=vp[node].F , anst[node]=m-node ;
else if(anst[nxt[node]]>nxt[node]-node+mp[vp[node].F]) ans[node]=ans[nxt[node]] , anst[node]=anst[nxt[node]] ;
else if(anst[nxt[node]]<nxt[node]-node+mp[vp[node].F]) ans[node]=vp[node].F , anst[node]=nxt[node]-node+mp[vp[node].F] ;
else{
if(ans[nxt[node]]<=vp[node].F) ans[node]=ans[nxt[node]] , anst[node]=anst[nxt[node]] ;
else ans[node]=vp[node].F , anst[node]=nxt[node]-node+mp[vp[node].F] ;
}
if(nxt[node]!=-1) mp[vp[node].F]+=nxt[node]-node ;
for(int i:nei[node]) dfs(i) ;
if(nxt[node]!=-1) mp[vp[node].F]-=nxt[node]-node ;
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) ;
cin >> n >> m ;
vp.resize(m) ;
for(int i=0 ; i<m ; i++){
cin >> vp[i].F >> vp[i].S ;
v[vp[i].F].push_back(i) ;
v[vp[i].S].push_back(i) ;
}
for(int i=0 ; i<m ; i++){
int temp = upper_bound(v[vp[i].F].begin(),v[vp[i].F].end(),i)-v[vp[i].F].begin() ;
if(temp==v[vp[i].F].size()) nxt[i]=-1 ;
else nxt[i]=v[vp[i].F][temp] ;
}
for(int i=0 ; i<m ; i++){
if(nxt[i]!=-1) nei[nxt[i]].push_back(i) ;
}
for(int i=m-1 ; i>=0 ; i--){
if(!vis[i]) dfs(i) ;
}
for(int i=0 ; i<m ; i++) cnt[ans[i]]++ ;
for(int i=0 ; i<n ; i++) cout << cnt[i] << ' ' ;
cout << '\n' ;
return 0 ;
}