#include <bits/stdc++.h>
using namespace std;
int n, m, a, b, ca, cb, ha, hb, ok;
int x[200005], y[200005], deg[200005], qd[200005], qn[200005], l[200005], E;
int v[200005], A[300], B[300], S[300], T[300];
void bd(int x, int y) {
  qd[++E] = y;
  qn[E] = l[x];
  l[x] = E;
}
void Test(int x, int y) {
  if (ok) return;
  if (deg[x] > a && deg[y] > b) {
    if (deg[x] >= a + b + 1) {
      ok = 1;
      for (int k = l[y], i = 0; k && i < b; k = qn[k])
        if (qd[k] != x) {
          B[i++] = qd[k];
          v[qd[k]] = 1;
        }
      for (int k = l[x], i = 0; k && i < a; k = qn[k])
        if (!v[qd[k]] && qd[k] != y) {
          A[i++] = qd[k];
          v[qd[k]] = 1;
        }
    } else if (deg[y] >= a + b + 1) {
      ok = 1;
      for (int k = l[x], i = 0; k && i < a; k = qn[k])
        if (qd[k] != y) {
          A[i++] = qd[k];
          v[qd[k]] = 1;
        }
      for (int k = l[y], i = 0; k && i < b; k = qn[k])
        if (!v[qd[k]] && qd[k] != x) {
          B[i++] = qd[k];
          v[qd[k]] = 1;
        }
    } else {
      ca = cb = 0;
      for (int k = l[x]; k; k = qn[k])
        if (qd[k] != y) S[ca++] = qd[k];
      for (int k = l[y]; k; k = qn[k])
        if (qd[k] != x) T[cb++] = qd[k];
      for (int i = (0); i < (ca); i++) v[S[i]]++;
      for (int i = (0); i < (cb); i++) v[T[i]]++;
      ha = hb = 0;
      for (int i = (0); i < (ca); i++)
        if (v[S[i]] == 1 && ha < a) A[ha++] = S[i];
      for (int i = (0); i < (cb); i++)
        if (v[T[i]] == 1 && hb < b) B[hb++] = T[i];
      for (int i = (0); i < (ca); i++)
        if (v[S[i]] == 2 && ha < a) {
          A[ha++] = S[i];
          v[S[i]] = 0;
        }
      for (int i = (0); i < (cb); i++)
        if (v[T[i]] == 2 && hb < b) B[hb++] = T[i];
      if (ha == a && hb == b)
        ok = 1;
      else {
        for (int i = (0); i < (ca); i++) v[S[i]] = 0;
        for (int i = (0); i < (cb); i++) v[T[i]] = 0;
      }
    }
  }
  if (ok) {
    printf("YES\n");
    printf("%d %d\n", x, y);
    for (int i = (0); i < (a); i++)
      printf("%d%c", A[i], i == a - 1 ? '\n' : ' ');
    for (int i = (0); i < (b); i++)
      printf("%d%c", B[i], i == b - 1 ? '\n' : ' ');
  }
}
int main() {
  scanf("%d%d%d%d", &n, &m, &a, &b);
  memset(l, 0, sizeof(l));
  memset(v, 0, sizeof(v));
  E = 0;
  for (int i = (0); i < (m); i++) {
    scanf("%d%d", &x[i], &y[i]);
    bd(x[i], y[i]);
    bd(y[i], x[i]);
    deg[x[i]]++;
    deg[y[i]]++;
  }
  ok = 0;
  for (int i = (0); i < (m); i++) {
    Test(x[i], y[i]);
    Test(y[i], x[i]);
  }
  if (!ok) printf("NO\n");
  return 0;
}
