#pragma GCC optimize("O3")
#include <bits/stdc++.h>

//#define int long long

using namespace std;

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x),end(x)
#define sz(x) (int)(x).size()
#define pb push_back
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;

int n, m;
vector<vector<int> > votes;
void ballot(int u, int v){
	vector<int> vote1 = {u, v};
	for(int i = 1; i <= n; i++){
		if((i != u) && (i != v)){
			vote1.pb(i);
		}
	}
	votes.pb(vote1);
	vector<int> vote2;
	for(int i = n; i >= 1; i--){
		if((i != u) && (i != v)){
			vote2.pb(i);	
		}
	}
	vote2.pb(u);
	vote2.pb(v);
	votes.pb(vote2);
}

signed main(){
	cin.tie(0);
	ios::sync_with_stdio(0);

	cin >> n >> m;
	for(int i = 0; i < m; i++){
		int a, b;
		cin >> a >> b;
		ballot(a, b);
	}

	cout << "YES\n";
	cout << sz(votes) << "\n";
	for(auto vote : votes){
		for(auto it : vote){
			cout << it << " ";
		}
		cout << "\n";
	}
	
	return 0;
}