func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 1e5 + 5;   int n, m, h, t, u, v, src[MAXN], dst[MAXN], num[MAXN], used[MAXN];   vector<int> g[MAXN];   void out(vector<int> &v) {     for (int i = 0; i < v.size(); ++i) {       cout << v[i] <<    n [i == v.size() - 1];     }   }   bool check(int u, int v, int ver) {     int cnt = 0;     num[u] = num[v] = -1;     for (int i = 0; i < g[u].size() && i < h + t; ++i) {       int w = g[u][i];       if (w == v) continue;       used[w] = ver;       num[w] = 1;       ++cnt;     }     for (int i = 0; i < g[v].size() && i < h + t; ++i) {       int w = g[v][i];       if (w == u) continue;       if (used[w] == ver) {         num[w] = 2;         continue;       }       used[w] = ver;       num[w] = 1;       ++cnt;     }     int degu = g[u].size() - 1, degv = g[v].size() - 1;     if (h >= t != degu >= degv) swap(degu, degv);     return degu >= h && degv >= t && cnt >= h + t;   }   void solve() {     for (int mm = 0; mm < m; ++mm) {       if (check(src[mm], dst[mm], mm + 1)) {         cout <<  YES n ;         u = src[mm], v = dst[mm];         if (h >= t != g[u].size() >= g[v].size()) swap(u, v);         cout << u <<     << v << endl;         vector<int> ans;         for (int i = 0; i < g[u].size() && ans.size() < h; ++i) {           int v = g[u][i];           if (num[v] == 1) {             num[v] == -1;             ans.push_back(v);           }         }         for (int i = 0; i < g[u].size() && ans.size() < h; ++i) {           int v = g[u][i];           if (num[v] > 1) {             ans.push_back(v);             num[v] = -1;           }         }         out(ans);         ans.clear();         swap(u, v);         for (int i = 0; i < g[u].size() && ans.size() < t; ++i) {           int v = g[u][i];           if (num[v] != -1) ans.push_back(v);         }         out(ans);         return;       }     }     cout <<  NO n ;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout << setprecision(6) << fixed;     clog.copyfmt(cout);     cin >> n >> m >> h >> t;     for (int i = 0; i < m; ++i) {       cin >> u >> v;       src[i] = u, dst[i] = v;       g[u].push_back(v);       g[v].push_back(u);     }     solve();     return 0;   }   