#include <bits/stdc++.h>
using namespace std;
const long long int N = 1e5 + 1, mod = 1000000007;
vector<long long int> adj[N];
signed main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  long long int pro = 1, temp, t, n, i, m, k, j, l, r, mid, x, y, z, rem,
                carry = 0, ind, ans = 0, mx = -LONG_LONG_MAX,
                mn = LONG_LONG_MAX, cnt = 0, curr = 0, prev, sum = 0, flag = 0,
                i1 = -1, i2 = -1;
  cin >> n >> m;
  for (i = 1; i <= m; i++) {
    cin >> x >> y;
    adj[x].push_back(y);
    adj[y].push_back(x);
  }
  if (n < 2 || m >= (n * (n - 1)) / 2) {
    return cout << "NO", 0;
  }
  cout << "YES\n";
  long long int a[n + 1], b[n + 1];
  for (i = 1; i <= n; i++) {
    b[i] = 1;
  }
  curr = 2;
  for (i = 1; i <= n; i++) {
    flag = 0;
    for (auto it : adj[i]) {
      if (b[it] == b[i]) {
        flag = 1;
        b[it] = curr;
      }
    }
    if (flag) {
      curr++;
    }
  }
  vector<pair<long long int, long long int> > v;
  v.push_back({-1, 0});
  for (i = 1; i <= n; i++) {
    v.push_back({b[i], i});
  }
  sort(v.begin(), v.end());
  for (i = 1; i <= n; i++) {
    a[v[i].second] = i;
  }
  for (i = 1; i <= n; i++) {
    cout << a[i] << ' ';
  }
  cout << endl;
  for (i = 1; i <= n; i++) {
    cout << b[i] << ' ';
  }
  return 0;
}
