#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int cnt[300005],vis[300005];
vector<int>e[300005];
void solve(){
return;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
int s,t;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
cnt[u]++;
cnt[v]++;
e[u].push_back(v);
e[v].push_back(u);
s=u;
t=v;
}
int b=1;
for(int i=1;i<=n;i++){
if(vis[i] || cnt[i]==0)continue;
queue<pair<int,int> >q;
q.push({i,0});
vis[i]=1;
while(!q.empty()){
int tmp=q.front().first,last=q.front().second;
q.pop();
for(auto j:e[tmp]){
if(j==last)continue;
if(vis[j]==1){
b=0;
break;
}
vis[j]=1;
q.push({j,tmp});
}
}
}
if(!b){
cout<<"No"<<endl;
return 0;
}
else cout<<"Yes"<<endl;
for(int i=1;i<=n;i++)vis[i]=0;
vis[s]=1;
vis[t]=1;
queue<pair<int,int> >q;
q.push({s,0});
vis[s]=1;
while(!q.empty()){
int tmp=q.front().first,last=q.front().second;
q.pop();
for(auto j:e[tmp]){
if(j==last || j==t || j==s || vis[j])continue;
vis[j]=1;
q.push({j,tmp});
cout<<tmp<<' '<<j<<endl;
}
}
int la=s;
for(int i=1;i<=n;i++){
if(vis[i] || i==s || i==t)continue;
cout<<la<<' '<<i<<endl;
queue<pair<int,int> >q;
q.push({i,0});
vis[i]=1;
while(!q.empty()){
int tmp=q.front().first,last=q.front().second;
q.pop();
for(auto j:e[tmp]){
if(j==last || j==t || j==s || vis[j])continue;
vis[j]=1;
q.push({j,tmp});
cout<<tmp<<' '<<j<<endl;
}
}
la=i;
}
cout<<la<<' '<<t<<endl;
q.push({t,0});
vis[t]=1;
while(!q.empty()){
int tmp=q.front().first,last=q.front().second;
q.pop();
for(auto j:e[tmp]){
if(j==last || j==t || j==s || vis[j])continue;
vis[j]=1;
q.push({j,tmp});
cout<<tmp<<' '<<j<<endl;
}
}
return 0;
}