#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(); }