#include <bits/stdc++.h>
using namespace std;
const int C = 200001;
vector<vector<int> > gr(C);
vector<vector<int> > gr2(C);
int ij[C], ij2[C], a, b, n, m, s, t, ds, dt, rnd = 0, poe = -1;
bool gg[2][C], lypa = 0, con[C];
void add(int a, int b) { gr2[a].push_back(b), ij2[a]++; }
int F[C], v[C];
bool check[C];
void nocc(int n) {
  int iF = 0, jF, i = 1, a, j = 0, sum = 1;
  for (int z = 1; z <= n; z++) check[i] = 0;
  check[s] = check[t] = 1;
  for (i = 1; i <= n; i++) {
    if (check[i] == 0) {
      check[i] = 1, F[0] = i, iF = 0, jF = 1, sum++, v[i] = sum;
      while (iF < jF) {
        a = F[iF];
        while (j < ij[a]) {
          if (check[gr[a][j]] == 0) {
            check[gr[a][j]] = 1, F[jF] = gr[a][j], v[F[jF]] = sum;
            add(a, F[jF]);
            jF++;
          }
          j++;
        }
        j = 0, iF++;
      }
    }
  }
}
int main() {
  int i, x, y, j;
  scanf("%d %d", &n, &m);
  for (int z = 0; z < m; z++)
    scanf("%d %d", &a, &b), gr[a].push_back(b), gr[b].push_back(a), ij[a]++,
        ij[b]++;
  scanf("%d %d %d %d", &s, &t, &ds, &dt);
  v[s] = 0, v[t] = 1;
  nocc(n);
  for (i = 0; i < ij[s]; i++) gg[0][v[gr[s][i]]] = 1;
  for (i = 0; i < ij[t]; i++) gg[1][v[gr[t][i]]] = 1;
  for (i = 2; i < C; i++) {
    if (gg[0][i] == 1 && gg[1][i] == 1)
      rnd++;
    else if (gg[0][i] == 1)
      ds--;
    else if (gg[1][i] == 1)
      dt--;
  }
  if (ds <= 0 || dt <= 0) lypa = 1;
  if (ds + dt <= rnd) lypa = 1;
  if (lypa == 1) {
    printf("No\n");
    return 0;
  }
  if (rnd == 0) add(s, t);
  for (i = 0; i < ij[s]; i++) {
    y = gg[1][v[gr[s][i]]];
    x = gr[s][i];
    if (con[v[x]] == 0 && x != t) {
      if (y == 1 && poe == -1)
        ds--, poe = v[x], add(s, x), con[v[x]] = 1;
      else if (y == 1 && ds > 0)
        ds--, add(s, x), con[v[x]] = 1;
      else if (y == 0)
        add(s, x), con[v[x]] = 1;
    }
  }
  for (i = 0; i < ij[t]; i++) {
    x = gr[t][i];
    if (con[v[x]] == 0 && x != s) {
      add(t, x);
      con[v[x]] = 1;
    } else if (poe == v[x]) {
      poe = -1;
      add(t, x);
    }
  }
  printf("Yes\n");
  for (i = 1; i <= n; i++) {
    for (j = 0; j < ij2[i]; j++) printf("%d %d\n", i, gr2[i][j]);
  }
  return 0;
}
