#include <bits/stdc++.h> using namespace std; vector<pair<int,int> > lol[55]; int taken[55]; signed main(){ int n,m; cin>>n>>m; for(int i=0; i<m; i++){ int a,b; cin>>a>>b; lol[max(a,b)].push_back({a,b}); } vector<deque<int> > ans; deque<int> xd; xd.push_back(1); ans.push_back(xd); for(int i=2; i<=n; i++){ vector<int> wins; vector<int> losses; for(int j=1; j<i; j++) taken[j]=0; for(auto u:lol[i]){ if(u.first == i){ wins.push_back(u.second); taken[u.second] = 1; } } for(int j=1; j<i; j++) if(taken[j]==0) losses.push_back(j); deque<int> norm,rev; norm.push_back(i); //rev.push_back(i); for(auto u:wins){ norm.push_back(u); rev.push_front(u); } for(auto u:losses){ norm.push_front(u); rev.push_back(u); } ans.push_back(rev); for(int j=0; j<i-1; j++){ ans[j].push_back(i); } for(int j=i-1; j<2*i-2; j++){ ans[j].push_front(i); } ans.push_back(norm); } cout<<"YES\n"; cout<<ans.size()<<"\n"; for(auto u:ans){ for(auto v:u) cout<<v<<" "; cout<<"\n"; } }