#include <bits/stdc++.h>
using namespace std;
const int M = 100005;
const int N = 30005;
struct Edge {
  int next, to;
} e[M];
int n, m, en;
int head[N];
int ans[N], an;
bool vis[N];
void addEdge(int u, int v) {
  e[en].to = v;
  e[en].next = head[u];
  head[u] = en++;
}
void init() {
  en = 0;
  an = 0;
  memset(head, -1, sizeof(head));
  memset(vis, 0, sizeof(vis));
}
void input() {
  int a, b;
  while (m--) {
    scanf("%d%d", &a, &b);
    addEdge(b, a);
  }
}
void dfs(int node) {
  vis[node] = 1;
  for (int i = head[node]; i != -1; i = e[i].next) {
    if (!vis[e[i].to]) {
      dfs(e[i].to);
    }
  }
  ans[an++] = node;
}
void solve() {
  for (int i = 1; i <= n; ++i) {
    if (!vis[i]) {
      dfs(i);
    }
  }
  for (int i = an - 1; i >= 0; --i) {
    printf("%d ", ans[i]);
  }
  puts("");
}
int main() {
  while (scanf("%d%d", &n, &m) != EOF) {
    init();
    input();
    solve();
  }
  return 0;
}
