#include <bits/stdc++.h>
using namespace std;
int N, M;
vector<int> graph[200005];
int nd[2], deg[2];
int cnt[2][200005];
int dsu[200005];
int olddsu[200005];
int sz[4];
int getrt(int n) { return dsu[n] = (dsu[n] == n ? n : getrt(dsu[n])); }
int getoldrt(int n) {
  return olddsu[n] = (olddsu[n] == n ? n : getoldrt(olddsu[n]));
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> N >> M;
  for (int i = 1; i <= M; i++) {
    int a, b;
    cin >> a >> b;
    graph[a].push_back(b);
    graph[b].push_back(a);
  }
  cin >> nd[0] >> nd[1] >> deg[0] >> deg[1];
  for (int i = 1; i <= N; i++) {
    dsu[i] = i;
  }
  vector<pair<int, int>> ans;
  for (int n = 1; n <= N; n++) {
    for (int e : graph[n]) {
      if (n != nd[0] && n != nd[1] && e != nd[0] && e != nd[1]) {
        if (getrt(n) != getrt(e)) {
          dsu[getrt(n)] = getrt(e);
          ans.emplace_back(n, e);
        }
      }
    }
  }
  bool spedge = 0;
  for (int k = 0; k < 2; k++) {
    for (int e : graph[nd[k]]) {
      cnt[k][getrt(e)]++;
      if (e == nd[0] || e == nd[1]) {
        spedge = 1;
      }
    }
    cnt[k][nd[0]] = cnt[k][nd[1]] = 0;
  }
  for (int i = 1; i <= N; i++) {
    olddsu[i] = dsu[i];
  }
  for (int k = 0; k < 2; k++) {
    for (int e : graph[nd[k]]) {
      if (getrt(e) != getrt(nd[k]) && cnt[k][getoldrt(e)] &&
          !cnt[k ^ 1][getoldrt(e)]) {
        ans.emplace_back(e, nd[k]);
        dsu[getrt(e)] = getrt(nd[k]);
        deg[k]--;
      }
    }
  }
  for (int k = 0; k < 2; k++) {
    for (int e : graph[nd[k]]) {
      if (cnt[k][getoldrt(e)] && cnt[k ^ 1][getoldrt(e)] &&
          getrt(e) != getrt(nd[k]) && deg[k] > 0) {
        ans.emplace_back(e, nd[k]);
        dsu[getrt(e)] = getrt(nd[k]);
        deg[k]--;
      }
    }
  }
  if (deg[0] > 0 && deg[1] > 0 && spedge && getrt(nd[0]) != getrt(nd[1])) {
    deg[0]--, deg[1]--;
    ans.emplace_back(nd[0], nd[1]);
    dsu[getrt(nd[0])] = getrt(nd[1]);
  }
  if (ans.size() == N - 1 && deg[0] >= 0 && deg[1] >= 0) {
    cout << "Yes\n";
    for (auto p : ans) {
      cout << p.first << " " << p.second << "\n";
    }
  } else {
    cout << "No\n";
  }
}
