#include <bits/stdc++.h>
using namespace std;
int n, m;
int u, v;
int fa[200010] = {};
int ff(int x) {
  if (x == fa[x]) return x;
  fa[x] = ff(fa[x]);
  return fa[x];
}
int s, t, ds, dt;
vector<int> e[200010];
bool vs[200010] = {};
int us[200010] = {};
int ut[200010] = {};
bool vt[200010] = {};
vector<pair<int, int> > ans;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) fa[i] = i;
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &u, &v);
    e[u].push_back(v);
    e[v].push_back(u);
  }
  scanf("%d%d%d%d", &s, &t, &ds, &dt);
  for (int i = 1; i <= n; i++) {
    if (i == s || i == t) continue;
    for (int j = 0; j < e[i].size(); j++) {
      if (e[i][j] == s || e[i][j] == t) continue;
      u = i;
      v = e[i][j];
      if (ff(u) != ff(v)) {
        ans.push_back(make_pair(u, v));
        fa[ff(u)] = ff(v);
      }
    }
  }
  for (int i = 0; i < e[s].size(); i++) {
    vs[ff(e[s][i])] = 1;
    us[ff(e[s][i])] = e[s][i];
  }
  for (int i = 0; i < e[t].size(); i++) {
    vt[ff(e[t][i])] = 1;
    ut[ff(e[t][i])] = e[t][i];
  }
  int aa = 0;
  int bb = 0;
  for (int i = 1; i <= n; i++) {
    if (i == s || i == t) continue;
    if (i == ff(i)) {
      if (vs[i] & vt[i] == 0) {
        if (vs[i] == 0 && vt[i] == 0) {
          cout << "No";
          return 0;
        }
        if (vs[i]) {
          aa++;
        } else
          bb++;
      }
    }
  }
  if (aa >= ds || bb >= dt) {
    cout << "No";
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    if (i == s || i == t) continue;
    if (i == ff(i)) {
      if (vs[i] & vt[i] == 0) {
        if (vs[i]) {
          fa[i] = s;
          ds--;
          ans.push_back(make_pair(s, us[i]));
        } else {
          fa[i] = t;
          dt--;
          ans.push_back(make_pair(t, ut[i]));
        }
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < e[i].size(); j++) {
      u = i;
      v = e[i][j];
      if (u == s && v == t) continue;
      if (u == t && v == s) continue;
      if (u == s || v == s) {
        if (ds == 0) continue;
      }
      if (u == t || v == t) {
        if (dt == 0) continue;
      }
      if (ff(u) != ff(v)) {
        if (u == s || v == s) ds--;
        if (u == t || v == t) dt--;
        ans.push_back(make_pair(u, v));
        fa[ff(u)] = ff(v);
      }
    }
  }
  if (ans.size() != n - 1) {
    if (ds == 0 || dt == 0) {
      cout << "No";
      return 0;
    }
    ans.push_back(make_pair(s, t));
  }
  cout << "Yes" << endl;
  for (int i = 0; i < ans.size(); i++)
    printf("%d %d\n", ans[i].first, ans[i].second);
  return 0;
}
