#include<bits/stdc++.h>
using namespace std;
const int N=205;
const int M=20005;
void read(int &x) {
int f=1;x=0;char c=getchar();
while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+(c^48);c=getchar();}
x*=f;
}
priority_queue<int,vector<int>,greater<int> > q;
vector<int> son[N];
vector<int> ans;
int in[N],n,m;
void topsort() {
for(int i=1;i<=n;i++) if(!in[i]) q.push(i);
while(q.size()) {
int x=q.top();q.pop();
ans.push_back(x);
for(int i=0;i<son[x].size();i++) {
int y=son[x][i];
in[y]--;
if(!in[y]) q.push(y);
}
}
}
int main() {
read(n),read(m);
for(int i=1;i<=m;i++) {
int x,y;
read(x),read(y);
son[x].push_back(y);
in[y]++;
}
topsort();
if(ans.size()==n) {
for(int i=0;i<n;i++) printf("%d ",ans[i]);
}
else printf("no solution");
}