#include <bits/stdc++.h>
using namespace std;
vector<int> L[100001];
vector<int> st;
int degree[100001];
ifstream f("sortaret.in");
ofstream g("sortaret.out");
void BFS(queue<int>& q) {
while (q.size() > 0) {
int nod = q.front();
q.pop();
st.push_back(nod);
for (int vecin: L[nod]) {
degree[vecin]--;
if (degree[vecin] == 0) {
q.push(vecin);
}
}
}
}
int main() {
int n, m;
f >> n >> m;
for (int i=1; i<=m; i++) {
int a, b;
f >> a >> b;
L[a].push_back(b);
degree[b]++;
}
queue<int> q;
for (int i=1; i<=n;i++)
if (degree[i] == 0)
q.push(i);
BFS(q);
for (int nod: st) {
g << nod << " ";
}
return 0;
}