#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using pii = pair<int, int>;

struct TopologicalSort {
  struct edge {
    int from, to;
    edge() {}
    edge(int from, int to) : from(from), to(to) {}
  };

  int n;
  vector<vector<edge>> G;
  vector<int> indeg;
  TopologicalSort() {}
  TopologicalSort(int n) : n(n), G(n), indeg(n) {}
  void add_edge(int f, int t) {
    G[f].emplace_back(f, t);
    indeg[t]++;
  }
  vector<int> query() {
    queue<int> que;
    for (int i = 0; i < n; i++) {
      if (indeg[i] == 0) que.emplace(i);
    }
    vector<int> res;
    while (!que.empty()) {
      int v = que.front(); que.pop();
      res.emplace_back(v);
      for (auto &e : G[v]) {
        if (--indeg[e.to] == 0) que.emplace(e.to);
      }
    }
    return res;
  }
};

int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(10);
  
  int m, n;
  cin >> m >> n;
  TopologicalSort T(m);
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    x--, y--;
    T.add_edge(x, y);
  }
  auto ans = T.query();
  for (auto i : ans) {
    cout << i + 1 << endl;
  }

  return 0;
}
