#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

#ifdef DEBUG
    #define var(x) cerr << #x << ": " << x << '\n';
    #define range(a, b) cerr << #a <<", " << #b << ": "; for (auto _it = a; _it != b; ++_it) cerr << *_it << ' '; cerr <<'\n';
#else
    #define cerr if (false) cerr
    #define var(x)
    #define range(a, b)
#endif

#define pii pair<int, int>
#define F first
#define S second
#define T(x, i) get<i>(x)
#define all(v) v.begin(), v.end()
#define forn(i, n) for (int i = 0; i < n; i++)

const int MAXN = 1e6 + 10;
int n, m;

void solve() {
    vector<vector<int>> res;
    forn(i, m) {
        int a, b;
        cin >> a >> b;
        vector<int> x(n);
        x[0] = a;
        x[1] = b;
        int ptr = 2;
        for (int j = 1; j <= n; j++) {
            if (j == a || j == b) continue;
            x[ptr++] = j;
        }
        auto y = x;
        reverse(all(y));
        swap(y[n-2], y[n-1]);
        res.push_back(x);
        res.push_back(y);
    }
    cout << "YES\n";
    cout << res.size() << '\n';
    for (auto x : res) {
        for (auto y : x) cout << y << ' ';
        cout << '\n';
    }
}

signed main() {
    #ifdef DEBUG
        freopen("input.in", "r", stdin);
        freopen("output.out", "w", stdout);
    #endif
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    while (cin >> n >> m) solve();
}