func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long linf = 1e18 + 5;   const int mod = (int)1e9 + 7;   const int logN = 17;   const int inf = 1e9;   const int N = 2e5 + 5;   int s, n, m, h1[N], h, t, x, y, z;   vector<int> v[N];   pair<int, int> e[N];   void print(int x, int y) {     cout <<  YES n ;     vector<int> com, h, t;     for (__typeof(v[x].begin()) it = v[x].begin(); it != v[x].end(); it++)       h1[*it]++;     for (__typeof(v[y].begin()) it = v[y].begin(); it != v[y].end(); it++)       h1[*it]++;     for (__typeof(v[x].begin()) it = v[x].begin(); it != v[x].end(); it++) {       if (*it == y) continue;       if (h1[*it] == 1 && h.size() < ::h) h.push_back(*it);       if (h1[*it] == 2) com.push_back(*it);     }     for (__typeof(v[y].begin()) it = v[y].begin(); it != v[y].end(); it++) {       if (*it == x) continue;       if (h1[*it] == 1 && t.size() < ::t) t.push_back(*it);     }     while (h.size() < ::h) {       h.push_back(com.back());       com.pop_back();     }     while (t.size() < ::t) {       t.push_back(com.back());       com.pop_back();     }     cout << x <<     << y <<   n ;     for (__typeof(h.begin()) it = h.begin(); it != h.end(); it++)       cout << *it <<    ;     cout <<   n ;     for (__typeof(t.begin()) it = t.begin(); it != t.end(); it++)       cout << *it <<    ;     cout <<   n ;   }   int main() {     scanf( %d %d %d %d , &n, &m, &h, &t);     int s = 0;     for (int i = 1; i <= m; i++) {       scanf( %d %d , &x, &y);       e[++s] = make_pair(x, y);       e[++s] = make_pair(y, x);       v[x].push_back(y);       v[y].push_back(x);     }     for (int i = 1; i <= n; i++) {       sort(v[i].begin(), v[i].end());     }     for (int i = 1; i <= s; i++) {       x = e[i].first;       y = e[i].second;       if (v[x].size() >= h + 1 && v[y].size() >= h + t + 1) {         print(x, y);         return 0;       }       if (v[x].size() >= h + t + 1 && v[y].size() >= t + 1) {         print(x, y);         return 0;       }       if (v[x].size() <= h || v[y].size() <= t) continue;       int j = 0;       int s1 = v[x].size() - 1, s2 = v[y].size() - 1, com = 0;       for (int tt = 0; tt <= s1; tt++) {         while (j < v[y].size() && v[y][j] < v[x][tt]) j++;         if (j < v[y].size() && v[y][j] == v[x][tt]) com++;       }       if (s1 + s2 - com >= h + t) {         print(x, y);         return 0;       }     }     cout <<  NO n ;     return 0;   }   