include<bits/stdc++.h>

using namespace std;

typedef long long ll; typedef double dbl;

define fr(x,a,b) for(ll x=a;x<b;x++)

define PB push_back

define MP make_pair

define mod 1000000007

define gmax LLONG_MAX

define gmin LLONG_MIN

define INF 2e9

ll n,m; bool adj[10001][10001];

void topological_sort(){ vector<ll> a; bool visited[n+1]; ll in_degree[n+1];

fr(i,1,n+1){ in_degree[i]=0; visited[i]=false; }

fr(i,1,n+1){ fr(j,1,n+1){ if(adj[i][j]) in_degree[j]++; } }

set<ll> mh; // acts as a min-heap

fr(i,1,n+1){ if(in_degree[i]==0){ mh.insert(i); visited[i]=true; } }

while(!mh.empty()){ ll v=(*mh.begin()); mh.erase(mh.begin()); a.PB(v); fr(j,1,n+1){ if(adj[v][j] && !visited[j]){ in_degree[j]--; if(in_degree[j]==0){ mh.insert(j); visited[j]=true; } } } }

if(a.size()<n){ printf("%s","Sandro fails."); //cout<<"Sandro fails."; } else{ fr(i,0,a.size()){ printf("%lld ",a[i]); //cout<<a[i]<<" "; } } }

int main(){ //ios::sync_with_stdio(false); //cin.tie(NULL); //cout.tie(NULL);

scanf("%lld%lld",&n,&m); //cin>>n>>m;

ll x,y; fr(i,0,m){ scanf("%lld%lld",&x,&y); //cin>>x>>y; adj[x][y]=true; }

topological_sort();

return 0; }