#include<iostream>
#include<vector>
using namespace std;
int used[1024][1024],m,n,d,l=0,c=1,a[110000][5],b[110000][5];
vector<int>v[1024];
void read()
{
    int i,az,bz;
    cin>>n>>m;
    for(i=0;i<m;i++)
    {
        scanf("%d %d", &az, &bz);
        v[az].push_back(bz);
        v[bz].push_back(az);
        used[az][bz]=2;
        used[bz][az]=2;
        b[i+1][1]=az;
        b[i+1][2]=bz;
    }
}
void solve(int i)
{
    int sz,k;
    sz=v[i].size();
    for(k=0;k<sz;k++)
    {
        if(used[i][v[i][k]]!=1)
        {
            used[i][v[i][k]]=1;
            used[v[i][k]][i]=1;
            a[c][1]=i;
            a[c][2]=v[i][k];
            c++;
            d=v[i][k];
            break;
        }
        if(k==sz-1) l=1;
    }
}
int main()
{
    int k,q,p,h,g,br1,br2,t=0;
    read();
    for(k=1;k<m;k++)
    used[k][k]=1;
    solve(1);
    while(l!=1) solve(d);
    for(p=1;p<=m;p++)
    for(q=1;q<=m;q++)
    if(used[p][q]==2)
    {
        for(g=1;g<=m;g++)
        if(used[p][g]==1) br1++;
        for(h=1;h<=m;h++)
        if(used[p][h]==1) br2++;
        if(br1>br2) {a[c][1]=q; a[c][2]=p; c++;}
        else {a[c][1]=p; a[c][2]=q; c++;}
        used[p][q]=1;
        used[q][p]=1;
    }
    br1=0;
    br2=0;
    for(q=1;q<=n;q++)
    {
        for(p=1;p<=m;p++)
        {
            if(a[p][1]==q) br1++;
            if(a[p][2]==q) br2++;
            if(br1>=br2)
            if(br1-br2>=2||br2-br1>=2) {cout<<"No"<<endl; t=1;}
        }
        br1=0;
        br2=0;
        if(t==1) break;
    }
    if(t==0)
    {
        cout<<"Yes"<<endl;
        for(p=1;p<=m;p++)
        for(q=1;q<=m;q++)
        {
            if(b[p][1]==a[q][1]||b[p][1]==a[q][2])
            if(b[p][2]==a[q][1]||b[p][2]==a[q][2])
            cout<<a[q][1]<<" "<<a[q][2]<<endl;
        }
    }
    return 0;
}