#define _CRT_SECURE_NO_WARNINGS
#include"bits/stdc++.h"
#ifdef _DEBUG
#define DBG(n) n
#else
#define DBG(n)
#endif
#define INF            1e9
#define INFLL          1e18
#define EPS            1e-9
#define REP(i,n)       for(ll i=0,i##_len=(n);i<i##_len;++i)
#define REP1(i,n)      for(ll i=1,i##_len=(n);i<=i##_len;++i)
#define REPR(i,n)      for(ll i=(n)-1;i>=0;--i)
#define REPR1(i,n)     for(ll i=(n);i>0;--i)
#define REPC(i,obj)    for(auto i:obj)
#define ALL(obj)       (obj).begin(),(obj).end()
#define SETP(n)        cout<<fixed<<setprecision(n)
#define VEC2(T,h,w)    move(vector<vector<T>>(h,vector<T>(w)))
#define VEC2I(T,h,w,i) move(vector<vector<T>>(h,vector<T>(w,i)))
using namespace std;
using ll = long long;
template<typename T, ll h, ll w>using vec2 = vector<vector<T>>;
template<typename T = ll>inline T in() { T ret; cin >> ret; return ret; }

signed main()
{
	ll m = in(), n = in();
	vector<vector<ll>>dist(m);
	vector<ll> indeg(m, 0);
	REP(i, n) {
		ll x = in() - 1, y = in() - 1;
		dist[x].push_back(y);
		++indeg[y];
	}
	ll cnt = 0;
	while (true) {
		REP(i, m) {
			if (indeg[i] == 0) {
				cout << i + 1 << endl;
				--indeg[i];
				if (++cnt == m) return 0;
				REPC(j, dist[i]) --indeg[j];
			}
		}
	}
}
