#include <bits/stdc++.h>
using namespace std;
int n,e,u,v;
set < int > myset[100005];
stack < int > temp_path;
vector < int > vec(100005);
bool chk_euler()
{
for(int i=1;i<=n;i++)
{
if((myset[i].size()&1)) return 0;
}
return 1;
}
bool euler_dfs(int ref)
{
temp_path.push(ref);
set < int >::iterator it;
int k=e;
while(!temp_path.empty())
{
int ver=temp_path.top();
if(myset[ver].size()!=0)
{
it=myset[ver].begin();
myset[ver].erase(*it);
myset[*it].erase(ver);
temp_path.push(*it);
}
else
{
vec[k]=ver; k--;
temp_path.pop();
}
}
cout<<"YES\n";
for(int i=0;i<e;i++)
{
cout<<vec[i]<<" "<<vec[i+1]<<"\n";
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>e;
int ref;
for(int i=0;i<e;i++)
{
cin>>u>>v;
if(i==0) ref=u;
myset[u].insert(v);
myset[v].insert(u);
}
if(chk_euler())
{
euler_dfs(ref);
}
else cout<<"NO\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4sZSx1LHY7CgpzZXQgPCBpbnQgPiBteXNldFsxMDAwMDVdOwoKc3RhY2sgPCBpbnQgPiB0ZW1wX3BhdGg7Cgp2ZWN0b3IgPCBpbnQgPiB2ZWMoMTAwMDA1KTsKCmJvb2wgY2hrX2V1bGVyKCkKewoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7CgkJaWYoKG15c2V0W2ldLnNpemUoKSYxKSkgcmV0dXJuIDA7Cgl9CgoJcmV0dXJuIDE7Cn0KCmJvb2wgZXVsZXJfZGZzKGludCByZWYpCnsJCgl0ZW1wX3BhdGgucHVzaChyZWYpOwoKCXNldCA8IGludCA+OjppdGVyYXRvciBpdDsKCglpbnQgaz1lOwogCgl3aGlsZSghdGVtcF9wYXRoLmVtcHR5KCkpCgl7CgkJaW50IHZlcj10ZW1wX3BhdGgudG9wKCk7CgoJCWlmKG15c2V0W3Zlcl0uc2l6ZSgpIT0wKQoJCXsKCQkJaXQ9bXlzZXRbdmVyXS5iZWdpbigpOwoKCQkJbXlzZXRbdmVyXS5lcmFzZSgqaXQpOwoKCQkJbXlzZXRbKml0XS5lcmFzZSh2ZXIpOwoKCQkJdGVtcF9wYXRoLnB1c2goKml0KTsJCgkJfQoKCQllbHNlCgkJewoJCQl2ZWNba109dmVyOyBrLS07CgoJCQl0ZW1wX3BhdGgucG9wKCk7CgkJfQkKCX0KCgljb3V0PDwiWUVTXG4iOwoKCWZvcihpbnQgaT0wO2k8ZTtpKyspCgl7CgkJY291dDw8dmVjW2ldPDwiICI8PHZlY1tpKzFdPDwiXG4iOwoJfQp9CgppbnQgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoKCWNpbi50aWUoTlVMTCk7CgoJY2luPj5uPj5lOwoKCWludCByZWY7CgoJZm9yKGludCBpPTA7aTxlO2krKykKCXsKCQljaW4+PnU+PnY7CgoJCWlmKGk9PTApIHJlZj11OwoKCQlteXNldFt1XS5pbnNlcnQodik7CgoJCW15c2V0W3ZdLmluc2VydCh1KTsKCX0KCglpZihjaGtfZXVsZXIoKSkKCXsKCQlldWxlcl9kZnMocmVmKTsKCX0KCgllbHNlIGNvdXQ8PCJOT1xuIjsKCglyZXR1cm4gMDsKfQ==