#include<iostream>
#include<queue>
#include<algorithm>

using namespace std;

#define rep(i,n) for(int i=0;i<(int)n;++i)

typedef vector<int> Edges;
typedef vector<Edges> Graph;

vector<vector<int> > g;
vector<int> order;
vector<bool> color;

void visit(int v) {
  color[v] = true;
  for (vector<int>::iterator e = g[v].begin(); e != g[v].end(); ++e) if (!color[*e]) visit(*e);
  order.push_back(v);
}
void topologicalSort() {rep (u, g.size()) if (!color[u]) visit(u);}

int main() {
  int m, n;
  cin >> m >> n;
  g.resize(m);
  color.resize(m);
  rep (i, n) {
    int x, y;
    cin >> x >> y;
    --x, --y;
    g[y].push_back(x);
  }
  topologicalSort();
  rep (i, m) cout << order[i] + 1 << endl;
  return 0;
}