#include<iostream>
using namespace std;

struct like
{
    int in;
    int out;
};

int a[1024][1024],m,n,node[1024],used[1024];
like l[1024];

void read()
{
  int i,v1,v2;
  cin>>n>>m;
  for(i=0;i<m;i++)
  {
    cin>>v1>>v2;
    a[v1][v2]=1;
    a[v2][v1]=1;
    if(node[v1]==0)node[v1]=v2;
    else node[v1]=-1;
    if(node[v2]==0)node[v2]=v1;
    else node[v2]=-1;
  }
}

void dfs(int v,int dir)
{
    used[v]=1;
    int i;
    for(i=1;i<=n;i++)
        if(a[v][i]==1 && node[i]<1)
        {
            if((l[v].out>l[v].in && dir>0) || (l[v].in>l[v].out && dir<0))dir*=-1;
            if(dir>0)
            {
                a[v][i]=2;
                a[i][v]=-1;
                l[v].out++;
                l[i].in++;
            }
            else
            {
                a[v][i]=-1;
                a[i][v]=2;
                l[i].out++;
                l[v].in++;
            }
            dfs(i,dir);
        }

}

void write()
{
    cout<<"Yes"<<endl;
    int i,j;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if(a[i][j]==2)cout<<i<<" "<<j<<endl;
}

int main()
{
    int i;
    read();
    for(i=1;i<=n;i++)
        if(!used[i] && node[i]<1)
            dfs(i,1);
    for(i=1;i<=n;i++)
    {
        if(node[i]>0)
        {
            if(l[node[i]].in>l[node[i]].out)
            {
                a[i][node[i]]=-1;
                a[node[i]][i]=2;
            }
            else
            {
                a[i][node[i]]=2;
                a[node[i]][i]=-1;
            }
        }
    }
    write();
    return 0;
}


/*
5 7
1 2
1 3
4 1
1 5
3 2
4 5
3 5

11 13
1 2
1 11
2 9
3 4
3 5
3 9
4 6
5 6
5 9
7 8
7 9
9 10
10 11
*/




