#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; vector<vector<int>> winner(1+n, vector<int>(1+n)); for (int i = 0; i < m; ++i) { int a, b; cin >> a >> b; winner[a][b] = a; winner[b][a] = a; } vector<vector<int>> perms; vector<vector<int>> permsRev; for (int i = 1; i <= n; ++i) { for (int j = i+1; j <= n; ++j) { vector<int> v; v.push_back(i); v.push_back(j); for (int k = 1; k <= n; ++k) { if (k != i && k != j) v.push_back(k); } perms.push_back(v); reverse(v.begin(), v.end()); permsRev.push_back(v); } } // since all are reversed, currently even cout << "YES\n" << (perms.size() + permsRev.size()) << '\n'; for (vector<int> & vote : perms) { if (winner[vote[0]][vote[1]] == vote[1]) { swap(vote[0], vote[1]); } for (int x : vote) cout << x << ' '; cout << '\n'; } for (vector<int> & vote : permsRev) { if (winner[vote[n-2]][vote[n-1]] == vote[n-1]) { swap(vote[n-2], vote[n-1]); } for (int x : vote) cout << x << ' '; cout << '\n'; } return 0; }