#include<iostream>
#include<vector>
using namespace std;
int n, m;
const int N = 1e6 + 10;
int d[N],p[N];
vector<int>arr[N];
void dfs(int x)
{
d[x] = x;
for(auto i:arr[x])
d[x]=max(d[x],i);
for (auto i : arr[x])
{
if (d[i] == 0)
dfs(i);
d[x] = max(d[x], d[i]);
}
}
void add(int x)
{
p[x]=1;
for(auto i:arr[x])
{
if(p[i]==0)
add(i);
d[x]=max(d[x],d[i]);
}
}
int main()
{
cin >> n >> m;
while (m--)
{
int x, y;
cin >> x >> y;
arr[x].push_back(y);
}
for (int i = 1;i<=n;i++)
{
if(d[i]==0)
{
dfs(i);
add(i);
}
}
for (int i = 1;i <= n;i++)
cout <<d[i]<< " ";
}