#include <fstream>
#include <cstring>
#include <vector>
#include <stack>
using namespace std;
ifstream fin("listavecini.in");
ofstream fout("listavecini.out");
int n,m;
vector <vector<int>> g;
vector<bool>vizitat;
stack<int> st;
void citire()
{
int a,b;
fin>>n>>m;
g=vector<vector<int>>(n+1);
vizitat=vector<bool>(n+1);
for (int i=1; i<=m; i++)
{
fin>>a>>b;
g[a].push_back(b);
}
}
void dfs(int nod)
{
vizitat[nod]=true;
for (const int &i: g[nod])
if (vizitat[i]==false)
dfs(i);
st.push(nod);
}
int main()
{
citire();
for (int i=1; i<=n; i++)
{
if (vizitat[i]==false)
dfs(i);
}
while (!st.empty())
{
fout<<st.top()<<" ";
st.pop();
}
}