#include <bits/stdc++.h>
struct {
  int to;
  int nextID;
} E[100001];
int LE[30001];
bool visited[30001];
int ans[30001], top;
void dfs(int s) {
  if (visited[s]) return;
  visited[s] = true;
  int ID;
  for (ID = LE[s]; ID != 0; ID = E[ID].nextID) dfs(E[ID].to);
  ans[++top] = s;
}
int main(void) {
  int N, M;
  scanf("%i %i", &N, &M);
  int i;
  for (i = 1; i <= M; i++) {
    int u, v;
    scanf("%i %i", &u, &v);
    E[i].to = v;
    E[i].nextID = LE[u];
    LE[u] = i;
  }
  for (i = 1; i <= N; i++)
    if (!visited[i]) dfs(i);
  for (i = 1; i <= N; i++) printf("%i%c", ans[i], (i == N) ? '\n' : ' ');
  return 0;
}
