#include <bits/stdc++.h>
#define int long long

#define MULTITEST false

using namespace std;

void solve () {
    int n, m; cin >> n >> m;
    vector<vector<pair<int, int>>> g(n);
    for (int i = 0; i < m; i++) {
        int a, b; cin >> a >> b;
        a--, b--;
        if (a < b) {
            g[b].push_back({a, 0});
        } else {
            g[a].push_back({b, 1});
        }
    }

    vector<deque<int>> result;
    for (int i = 1; i < n; i++) {
        for (int j = 0; j < result.size() / 2; j++) {
            result[j].push_back(i);
        }
        for (int j = 0; j < result.size() / 2; j++) {
            result[j+result.size() / 2].push_front(i);
        }
        for (auto& [j, v]: g[i]) {
            result.emplace_back();
            for (int z = 0; z < i; z++) {
                if (j == z) continue;
                result.back().push_back(z);
            }
            result.emplace_back();
            for (int z = i - 1; z > -1; z--) {
                if (j == z) continue;
                result.back().push_back(z);
            }
            if (v) {
                result.back().push_back(i);
                result.back().push_back(j);
                result[result.size() - 2].push_front(j);
                result[result.size() - 2].push_front(i);
            } else {
                result.back().push_back(j);
                result.back().push_back(i);
                result[result.size() - 2].push_front(i);
                result[result.size() - 2].push_front(j);
            }
        }
        cout << "YES\n";
        cout << result.size() << '\n';
        for (auto x : result) {
            for (auto y : x) cout << y+1 << ' ';
            cout << '\n';
        }
    }
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.precision(30);
    
    int T = 1;
    if (MULTITEST) cin >> T;

    for (int t = 0; t < T; t ++)
        solve();
}