#include <stdio.h>
#define N 200050
int n, m, i, j, k, a, b, c, h[N], r[N], q[N], f[N];
struct AB{
int a, b, n;
} d[N];
int main(){
scanf("%d%d", &n, &m);
for(i=1; i<=m; i++){
scanf("%d%d", &a, &b);
d[i].a = a, d[i].b = b;
d[i].n = h[a], h[a] = i;
r[b]++;//统计入度
}
for(i=1; i<=n; i++){
if(!r[i]) q[++j] = i;
}//入度为零最小
for(i=1; i<=j; i++){
if(i < j) break;//多个入度为零不唯一
a = q[i], f[a] = ++c;//依次编号
for(k=h[a]; k; k=d[k].n){
b = d[k].b;
if(--r[b] == 0) q[++j] = b;
}
}
if(i < j) printf("No\n");
else{
printf("Yes\n");
for(i=1; i<=n; i++){
printf("%d ", f[i]);
}
}
return 0;
}