#include <bits/stdc++.h>
using namespace std;

const int MAX_M = 21;

int n, m;
vector<int> G[MAX_M];
bool used[MAX_M];
vector<int> path;

void dfs(int idx){
  used[idx] = true;
  for(int i = 0 ; i < (int)G[idx].size() ; i++){
    if(!used[G[idx][i]]) dfs(G[idx][i]);
  }
  path.push_back(idx);
}

int main(){
  cin >> m >> n;
  
  int a, b;
  bool isroot[MAX_M];
  memset(isroot, true, sizeof(isroot));
  
  for(int i = 0 ; i < n ; i++){
    cin >> a >> b;
    a--, b--;
    G[a].push_back(b);
    isroot[b] = false;
  }
  
  for(int i = 0 ; i < m ; i++){
    if(isroot[i]) dfs(i);
  }
  
  for(int i = m-1 ; i >= 0 ; i--){
    cout << path[i]+1 << endl;
  }
  
  return 0;
}