#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int n, m;
const int MAX = 1e5 + 1;
vector<vector<int>> graf (MAX);
vector<bool> vizitat (MAX);
vector<int> ord;
void dfs (int nod) {
vizitat[nod] = true;
for (auto x : graf[nod])
if (!vizitat[x])
dfs (x);
ord.push_back(nod);
}
int main () {
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
fin >> n >> m;
for (int i = 1; i <= m; ++i) {
int a, b;
fin >> a >> b;
graf[a].push_back(b);
}
for (int i = 1; i <= n; ++i)
if (!vizitat[i])
dfs (i);
reverse (ord.begin(), ord.end());
for (auto x : ord)
fout << x << ' ';
return 0;
}