func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( Ofast )   using namespace std;   const int INF = 2e9 + 9;   const long long INF1 = 1e18 + 9;   const long long MAXN = 4e5 + 7;   const long long MAXN1 = 1 << 11;   const long long MAXN2 = 4e6 + 9;   const long long MOD = 1e9 + 7;   const long long MOD1 = 1e9 + 9;   const long long ALPH = 50;   const long long PW1 = 239;   const long long PW2 = 199;   const long long PW3 = 193;   const long long PW4 = 117;   const long double EPS = 1e-9;   const long long BLOCK = 3684;   const long long BLOCK1 = 1 << 9;   void solve();   signed main() {     srand( a  +  l  +  e  +  x  +  X  +  5  +  1  +  2 );     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     int q = 1;     if (0) cin >> q;     while (q--) solve();   }   set<int> v[MAXN];   void solve() {     int n, m;     cin >> n >> m;     vector<int> v1(n), v2(n);     for (int i = 0; i < m; ++i) {       int a, b;       cin >> a >> b;       v[a].emplace(b);       v[b].emplace(a);     }     for (int i = 1; i <= n; ++i) {       v[i].emplace(i);       if (v[i].size() == n) continue;       for (int j = 1; j <= n; ++j) {         if (v[i].find(j) == v[i].end()) {           cout <<  YES n ;           v2[i - 1] = v2[j - 1] = v1[i - 1] = 1;           v1[j - 1] = 2;           int ind = 2;           for (int t = 0; t < n; ++t)             if (v1[t] == 0) v1[t] = ++ind;           ind = 2;           for (int t = 0; t < n; ++t)             if (v2[t] == 0) v2[t] = ++ind;           for (auto &i : v1) cout << i <<    ;           cout <<   n ;           for (auto &i : v2) cout << i <<    ;           return;         }       }     }     cout <<  NO ;   }   