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