#include <bits/stdc++.h>
using namespace std;
const int MAXN=100005;
vector<int> G[MAXN];
queue<int> q;
bool flag[MAXN];
int bfs(int i)
{
int ans=0;
q.push(i);
flag[i]=true;
while (!q.empty())
{
int u=q.front();
q.pop();
ans=max(ans,u);
for (int j=0;j<G[u].size();j++)
{
int v=G[u][j];
if(!flag[v])
{
q.push(v);
flag[v]=true;
}
}
}
return ans;
}
int a[MAXN];
int main()
{
int n,m;
cin>>n>>m;
for (int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
G[u].push_back(v);
}
for (int i=1;i<=n;i++)
{
memset(flag,0,sizeof(flag));
a[i]=bfs(i);
}
for (int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int MAXN=100005;
vector<int> G[MAXN];
queue<int> q;
bool flag[MAXN];
int ans=0;
void dfs(int i)
{
if (flag[i]==true)
{
return;
}
flag[i]=true;
ans=max(i,ans);
for (int j=0;j<G[i].size();j++)
{
dfs(G[i][j]);
}
}
int a[MAXN];
int main()
{
int n,m;
cin>>n>>m;
for (int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
G[u].push_back(v);
}
for (int i=1;i<=n;i++)
{
memset(flag,0,sizeof(flag));
ans=0;
dfs(i);
a[i]=ans;
}
for (int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}