#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define Max 1000
#define pb push_back
#define ll long long
using namespace std;
ll indegree[Max];
vector<ll>v[Max];
vector<ll>ans;
ll topsort(ll m)
{
ll i,j,l,k,taken[Max]={0};
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++){
if(indegree[j]==0&&!taken[j]){
ans.pb(j);
taken[j]=1;
l=v[j].size();
for(k=0;k<l;k++)
indegree[v[j][k]]--;
}
}
}
}
int main()
{
ll m,n,i,x,y;
while(cin>>m>>n)
{
if(m==0&&n==0)
break;
for(i=1;i<=m;i++)
indegree[i]=0;
while(n--)
{
cin>>x>>y;
indegree[y]++;
v[x].pb(y);
}
topsort(m);
cout<<ans[0];
for(i=1;i<ans.size();i++)
cout<<" "<<ans[i];
cout<<endl;
for(i=1;i<110;i++)
v[i].clear();
ans.clear();
}
}
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct node
{
int a;
int b;
};
bool cmp(const node c1, const node c2) {
return (c1.a < c2.a);
}
int main()
{
int x;
node v[5];
for(int i=0;i<5;i++)
{
cin>>x;
v[i].a=x;
v[i].b=i;
}
sort(v,v+5,cmp);
for(int i=0;i<5;i++)
cout<<v[i].b<<" ";
}
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
bool a[1000001];
void sieve()
{
long long i,j,m;
m=sqrt(1000000);
a[1]=1;
a[0]=1;
for(i=3;i<=m;i+=2)
{
if(a[i]==0)
for(j=i*i;j<=1000000;j+=i+i)
a[j]=1;
}
}
int main()
{
sieve();
long long m;
while(cin>>m)
{
if(m!=2&&m%2==0)
cout<<"not prime"<<endl;
else if(a[m]==0)
cout<<"prime"<<endl;
else
cout<<"not prime"<<endl;
}
}
#include<iostream>
#include<vector>
#include<cmath>
#define pb(a) push_back(a)
using namespace std;
int main()
{
long n,i,m;
vector<long>pfactor;
cin>>n;
m=sqrt(n);
for(i=2;i<=m;i++)
{
if(n%i==0)
while(n%i==0)
{
pfactor.pb(i);
n/=i;
}
}
if(n!=1)
pfactor.pb(n);
cout<<"number of factor :"<<pfactor.size()<<endl;
for(i=0;i<pfactor.size();i++)
cout<<pfactor[i]<<" ";
}
#include<iostream>
#include<algorithm>
#include<vector>v;
#define ll long long
#define pb push_back
using namespace std;
pair<ll,ll>a[1000000];
ll m,i,ans[400000],x;
int main()
{
cin>>m;
for(i=0;i<m;i++)
{
cin>>a[i].first;
a[i].second=i;
}
sort(a,a+m);
ans[a[0].second]=a[0].first;
for(i=1;i<m;i++)
{
if(a[i].first<a[i-1].first+1)
a[i].first=a[i-1].first+1;
ans[a[i].second]=a[i].first;
}
cout<<ans[0];
for(i=1;i<m;i++)
cout<<" "<<ans[i];
cout<<endl;
}
#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
#define pb push_back
long long m,n,k,i,j;
double ans;
vector<double>v;
int main()
{
cin>>m;
ans=double(m);
n=sqrt(m);
k=m;
for(i=2;i<=n;i++)
{
if(m%i==0)
{
v.pb(double(i));
while(m%i==0)
m/=i;
n=sqrt(m);
}
}
if(m!=1)
v.pb(double(m));
for(i=0;i<v.size();i++)
ans*=double(1-1/v[i]);
cout<<ans<<endl;
}
#include<iostream>
using namespace std;
int main()
{
long long n,r,ncr[31][31];
for(n=0;n<=30;n++)
{
for(r=0;r<=n;r++)
{
if(r==0||r==n)
ncr[n][r]=1;
else
ncr[n][r]=(ncr[n-1][r]+ncr[n-1][r-1]);
}
}
while(cin>>n>>r)
cout<<ncr[n][r]<<endl;
}