#include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n,m; cin>>n>>m; vector<pair<int,int> > edges(m); vector<vector<int>> perm; vector<vector<int>> perm_o; vector<int> perm_s; for(int i = 0 ; i < m ; i ++){ cin>>edges[i].first;edges[i].first --; cin>>edges[i].second;edges[i].second --; } vector<vector<int> > counts(n, vector<int> (n)); perm.push_back(vector<int> (n,-1)); perm_o.push_back(vector<int> (n,-1)); perm_s.push_back(0); bool goodall = false; int iter = 0; while(perm.size() <= 50000 && !goodall){ iter ++; for(int e = 0 ; e < m && perm.size() <= 50000; e ++){ bool f = false; int estr = edges[e].first; int eend = edges[e].second; if(counts[estr][eend]*2 <= perm.size()) for(int g = 0 ; g < perm.size() ; g ++){ if(perm_o[g][estr] == -1 && perm_o[g][eend] == -1){ perm_o[g][estr] = perm_s[g]; perm[g][perm_s[g]] = estr; perm_s[g]++; perm_o[g][eend] = perm_s[g]; perm[g][perm_s[g]] = eend; perm_s[g]++; counts[estr][eend] ++; for(int p = 0 ; p < perm_s[g] -2 ; p ++){ counts[perm[g][p]][estr] ++; counts[perm[g][p]][eend] ++; } f = true; break; }else if(perm_o[g][eend] == -1){ perm_o[g][eend] = perm_s[g]; perm[g][perm_s[g]] = eend; perm_s[g]++; for(int p = 0 ; p < perm_s[g] -1 ; p ++){ counts[perm[g][p]][eend] ++; } f = true; break; }else{ continue; } } if(!f && counts[estr][eend]*2 <= perm.size()){ perm.push_back(vector<int> (n,-1)); perm_o.push_back(vector<int> (n,-1)); perm_s.push_back(2); counts[estr][eend] ++; int g = perm.size() -1; perm[g][0] = estr; perm[g][1] = eend; perm_o[g][estr] = 0; perm_o[g][eend] = 1; } } goodall = true; for(int e = 0 ; e < m ; e ++) { int estr = edges[e].first; int eend = edges[e].second; if(counts[estr][eend]*2 <= perm.size()){ goodall = false; break; } } } if(!goodall){ cout << "NO"; }else{ cout <<"YES\n"; cout << perm.size() << endl; for(int g = 0 ; g < perm.size() ; g ++){ for(int p = 0 ; p < perm_s[g] ; p ++){ cout << perm[g][p]+1 <<" "; } for(int v = 0 ; v < n ; v ++){ if(perm_o[g][v] == -1) cout << v+1 <<" "; } cout << endl; } } }