#include <bits/stdc++.h>
using namespace std;
int n, m, a, b;
int h[100100], nxt[500100], vv[500100], e;
void add(int u, int v) {
  vv[e] = v, nxt[e] = h[u], h[u] = e++;
  vv[e] = u, nxt[e] = h[v], h[v] = e++;
}
map<pair<int, int>, bool> mp;
int arr[5][100100];
int cnt[100100];
struct Edge {
  int u, v;
  bool operator<(const Edge& nde) const {
    if (cnt[u] == cnt[nde.u]) return cnt[v] > cnt[nde.v];
    return cnt[u] > cnt[nde.u];
  }
} edge[500100];
int main() {
  int x, y;
  scanf("%d%d%d%d", &n, &m, &a, &b);
  memset(h, -1, sizeof(h)), e = 0;
  while (m--) {
    scanf("%d%d", &x, &y);
    cnt[x]++, cnt[y]++;
    edge[e].u = x, edge[e].v = y;
    edge[e + 1].u = y, edge[e + 1].v = x;
    add(x, y);
    mp[make_pair(x, y)] = mp[make_pair(y, x)] = true;
  }
  bool ok = false;
  sort(edge, edge + e);
  for (int i = 0; !ok && i < e; i++) {
    int u, v;
    u = edge[i].u, v = edge[i].v;
    if (cnt[u] <= a) continue;
    if (cnt[v] <= b) continue;
    arr[0][0] = arr[1][0] = arr[2][0] = 0;
    for (int j = h[u]; j + 1; j = nxt[j]) {
      if (vv[j] == v) continue;
      if (mp[make_pair(vv[j], v)] == false)
        arr[0][++arr[0][0]] = vv[j];
      else
        arr[2][++arr[2][0]] = vv[j];
    }
    for (int j = h[v]; j + 1; j = nxt[j]) {
      if (vv[j] == u) continue;
      if (mp[make_pair(vv[j], u)] == false) arr[1][++arr[1][0]] = vv[j];
    }
    int need = 0;
    if (arr[0][0] < a) need += a - arr[0][0];
    if (arr[1][0] < b) need += b - arr[1][0];
    if (need > arr[2][0]) continue;
    int k = 1;
    while (arr[0][0] < a) {
      arr[0][++arr[0][0]] = arr[2][k++];
    }
    while (arr[1][0] < b) {
      arr[1][++arr[1][0]] = arr[2][k++];
    }
    if (arr[0][0] > a) arr[0][0] = a;
    if (arr[1][0] > b) arr[1][0] = b;
    ok = true;
    a = u, b = v;
    break;
  }
  if (ok) {
    puts("YES");
    printf("%d %d\n", a, b);
    for (int i = 1; i <= arr[0][0]; i++) printf("%d ", arr[0][i]);
    puts("");
    for (int i = 1; i <= arr[1][0]; i++) printf("%d ", arr[1][i]);
    puts("");
  } else
    puts("NO");
  return 0;
}
