#include <bits/stdc++.h>
using namespace std;
vector<long long> adj[100100];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long n, k;
  cin >> n >> k;
  if (n == 1) {
    cout << "NO";
    return 0;
  }
  long long a[k + 100], b[k + 100];
  long long arr1[n + 100];
  long long arr2[n + 100];
  map<long long, map<long long, long long>> m;
  for (int i = 1; i <= n; i++) {
    adj[i].push_back(i);
  }
  for (int i = 0; i < k; i++) {
    cin >> a[i] >> b[i];
    m[a[i]][b[i]]++;
    m[b[i]][a[i]]++;
  }
  long long foo = 0;
  long long ans_x = 0;
  long long ans_y = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i != j) {
        if (m[i][j] == 0) {
          ans_x = i;
          ans_y = j;
          foo = 1;
          break;
        }
      }
    }
    if (foo == 1) {
      break;
    }
  }
  if (foo == 0) {
    cout << "NO";
  } else {
    arr1[ans_x] = n;
    arr1[ans_y] = n - 1;
    arr2[ans_x] = n;
    arr2[ans_y] = n;
    long long temp = 1;
    for (int i = 1; i <= n; i++) {
      if (i != ans_x && i != ans_y) {
        arr1[i] = temp;
        arr2[i] = temp;
        temp++;
      }
    }
    cout << "YES\n";
    for (int i = 1; i <= n; i++) {
      cout << arr1[i] << " ";
    }
    cout << "\n";
    for (int i = 1; i <= n; i++) {
      cout << arr2[i] << " ";
    }
    cout << "\n";
  }
}
