#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
struct Node {
  int fe, dis, ctr;
  bool vis, in;
};
struct Edge {
  int fr, to, v, n;
};
struct Graph {
  Node node[5010];
  Edge e[10010];
  queue<int> q;
  int l, n, m;
  void connect(int fr, int to, int v) {
    e[++l].n = node[fr].fe;
    node[fr].fe = l;
    e[l].fr = fr;
    e[l].to = to;
    e[l].v = v;
  }
  bool spfa(int s) {
    for (int i = 1; i <= n; i++) {
      node[i].dis = INF;
      node[i].vis = false;
    }
    node[s].dis = 0;
    node[s].vis = true;
    node[s].ctr = 1;
    q.push(s);
    while (!q.empty()) {
      int s = q.front();
      q.pop();
      node[s].vis = false;
      for (int i = node[s].fe; i; i = e[i].n) {
        if (node[s].dis + e[i].v < node[e[i].to].dis) {
          node[e[i].to].dis = node[s].dis + e[i].v;
          if (!node[e[i].to].vis) {
            node[e[i].to].ctr++;
            if (node[e[i].to].ctr > n) {
              return true;
            }
            node[e[i].to].vis = true;
            q.push(e[i].to);
          }
        }
      }
    }
    return false;
  }
};
int n, m;
Graph g0, g;
bool dfs(int s) {
  if (s == n || g0.node[s].in) {
    return true;
  }
  g0.node[s].vis = true;
  for (int i = g0.node[s].fe; i; i = g0.e[i].n) {
    if (g0.node[g0.e[i].to].vis) {
      continue;
    }
    if (dfs(g0.e[i].to)) {
      g.connect(s, g0.e[i].to, 2);
      g.connect(g0.e[i].to, s, -1);
      g0.node[s].in = true;
    }
  }
  g0.node[s].vis = false;
  return g0.node[s].in;
}
void print() {
  printf("Yes\n");
  for (int i = 1; i <= m; i++) {
    int v = g.node[g0.e[i].to].dis - g.node[g0.e[i].fr].dis;
    printf("%d\n", v >= 1 && v <= 2 ? v : 1);
  }
}
int main() {
  scanf("%d %d", &n, &m);
  g.n = n;
  g.m = m;
  for (int i = 1; i <= m; i++) {
    int fr, to;
    scanf("%d %d", &fr, &to);
    g0.connect(fr, to, 0);
  }
  dfs(1);
  for (int i = 1; i <= n; i++) {
    g.connect(0, i, 0);
  }
  if (!g0.node[1].in || g.spfa(0)) {
    printf("No\n");
    return 0;
  } else {
    print();
  }
  return 0;
}
