#include <bits/stdc++.h>
using namespace std;
struct node {
  int u, v, next;
} edge[101010 * 2];
int head[101010], add, n, m;
void adj(int u, int v) {
  edge[add].v = v;
  edge[add].next = head[u];
  head[u] = add++;
}
int vis[101010];
void dfs(int u) {
  vis[u] = 1;
  for (int i = head[u]; i != -1; i = edge[i].next) {
    int v = edge[i].v;
    if (!vis[v]) dfs(v);
  }
  printf("%d ", u);
}
int main() {
  int i, j, u, v;
  while (scanf("%d %d", &n, &m) != EOF) {
    memset(head, -1, sizeof(head));
    add = 0;
    memset(vis, 0, sizeof(vis));
    for (i = 0; i < m; ++i) scanf("%d %d", &u, &v), adj(u, v);
    for (i = 1; i <= n; i++)
      if (!vis[i]) dfs(i);
    puts("");
  }
}
