#include <bits/stdc++.h>
const int N = 400005;
struct edge {
  int x, y;
} a[N];
int n, m, s, t, p, ds, dt, cnt, ans[N], d[N][2], fa[N];
template <class type>
inline void read(type &k) {
  k = 0;
  type t = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') t = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    k = k * 10 + ch - '0';
    ch = getchar();
  }
  k *= t;
}
inline int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]); }
int main() {
  int i;
  read(n);
  read(m);
  for (i = 1; i <= m; i++) read(a[i].x), read(a[i].y);
  read(s);
  read(t);
  read(ds);
  read(dt);
  for (i = 1; i <= n; i++) fa[i] = i;
  for (i = 1; i <= m; i++) {
    if (a[i].x == s && a[i].y == t) p = i;
    if (a[i].y == s && a[i].x == t) p = i;
  }
  for (i = 1; i <= m; i++) {
    if (a[i].x == s || a[i].x == t || a[i].y == s || a[i].y == t) continue;
    if (find(a[i].x) == find(a[i].y))
      continue;
    else
      fa[find(a[i].y)] = find(a[i].x), ans[++cnt] = i;
  }
  for (i = 1; i <= m; i++) {
    if (i == p) continue;
    if (a[i].x == s || a[i].y == s)
      d[find(a[i].x == s ? a[i].y : a[i].x)][0] = i;
    if (a[i].x == t || a[i].y == t)
      d[find(a[i].x == t ? a[i].y : a[i].x)][1] = i;
  }
  bool used = false;
  for (i = 1; i <= n; i++) {
    if (i == s || i == t) continue;
    if (d[i][0] && !d[i][1]) ans[++cnt] = d[i][0], ds--;
    if (!d[i][0] && d[i][1]) ans[++cnt] = d[i][1], dt--;
    if (ds < 0 || dt < 0) {
      puts("No");
      return 0;
    }
  }
  for (i = 1; i <= n; i++) {
    if (d[i][0] && d[i][1]) {
      if (!used) {
        ans[++cnt] = d[i][0];
        ds--;
        ans[++cnt] = d[i][1];
        dt--;
        used = 1;
      } else {
        if (ds > 0)
          ans[++cnt] = d[i][0], ds--;
        else
          ans[++cnt] = d[i][1], dt--;
      }
    }
    if (ds < 0 || dt < 0) {
      puts("No");
      return 0;
    }
  }
  if (!used) {
    if (!p) {
      puts("No");
      return 0;
    }
    ds--;
    dt--;
    ans[++cnt] = p;
    if (ds < 0 || dt < 0) {
      puts("No");
      return 0;
    }
  }
  puts("Yes");
  for (i = 1; i <= cnt; i++) printf("%d %d\n", a[ans[i]].x, a[ans[i]].y);
  return 0;
}
