#include <bits/stdc++.h>
using namespace std;
const int mmax = 100010;
vector<int> V[mmax];
int u[mmax], v[mmax];
int cnt[mmax];
int main() {
  int n, m, h, t;
  scanf("%d %d %d %d", &n, &m, &h, &t);
  for (int i = 0; i < m; i++) {
    scanf("%d %d", &u[i], &v[i]);
    V[u[i]].push_back(v[i]);
    V[v[i]].push_back(u[i]);
  }
  bool fg = 0;
  for (int i = 0; i < m; i++) {
    int cntu = 0, cntv = 0, cntb = 0;
    int Szu = V[u[i]].size(), Szv = V[v[i]].size();
    Szu = min(Szu, 200);
    Szv = min(Szv, 200);
    for (int j = 0; j < Szu; j++) {
      int en = V[u[i]][j];
      if (en != v[i]) {
        cnt[en]++;
        cntu++;
      }
    }
    for (int j = 0; j < Szv; j++) {
      int en = V[v[i]][j];
      if (en != u[i]) {
        if (cnt[en]) {
          cntb++;
        }
        cnt[en]++;
        cntv++;
      }
    }
    if (cntv + cntu - cntb >= h + t) {
      if (cntu >= h && cntv >= t) {
        fg = 1;
        puts("YES");
        printf("%d %d\n", u[i], v[i]);
        int cc = 0;
        for (int j = 0; j < Szu; j++) {
          int en = V[u[i]][j];
          if (cc < h && cnt[en] == 1) {
            printf("%d ", en);
            cc++;
          }
        }
        for (int j = 0; j < Szu; j++) {
          int en = V[u[i]][j];
          if (cc < h && cnt[en] == 2) {
            printf("%d ", en);
            cnt[en] = 0;
            cc++;
          }
        }
        printf("\n");
        cc = 0;
        for (int j = 0; j < Szv; j++) {
          int en = V[v[i]][j];
          if (cc < t && cnt[en]) {
            printf("%d ", en);
            cc++;
          }
        }
        printf("\n");
        break;
      }
      if (cntv >= h && cntu >= t) {
        fg = 1;
        puts("YES");
        printf("%d %d\n", v[i], u[i]);
        int cc = 0;
        for (int j = 0; j < Szv; j++) {
          int en = V[v[i]][j];
          if (cc < h && cnt[en] == 1) {
            printf("%d ", en);
            cc++;
          }
        }
        for (int j = 0; j < Szv; j++) {
          int en = V[v[i]][j];
          if (cc < h && cnt[en] == 2) {
            printf("%d ", en);
            cnt[en] = 0;
            cc++;
          }
        }
        printf("\n");
        cc = 0;
        for (int j = 0; j < Szu; j++) {
          int en = V[u[i]][j];
          if (cc < t && cnt[en]) {
            printf("%d ", en);
            cc++;
          }
        }
        printf("\n");
        break;
      }
    }
    for (int j = 0; j < Szu; j++) cnt[V[u[i]][j]] = 0;
    for (int j = 0; j < Szv; j++) cnt[V[v[i]][j]] = 0;
  }
  if (!fg) puts("NO");
  return 0;
}
