#include <iostream>
using namespace std;

int a[100001][3]={0},n,m;
int P[10001];

class Person
{
  public:
  int d;
  int ch;
  int c[2];
  Person()
  {
    d=0;c[0]=0;c[1]=0;ch=0;
  }
  void incr()
  {
    d++;
    ch=d%2;
    c[0]=d/2;
    c[1]=c[0];
  }
};

Person b[10001];

void findp()
{
  int i=a[0][0];
  P[i]=0;
  for(int j=1;j<m;j++)
  {
    if(a[j][0]!=i)
    {
      i=a[j][0];
      P[i]=j;
    }
  }
}

void re6(int p)
{
  if(p>n)return;
  int i;
  i=P[p];
  while(b[p].c[0])
  {
    if(!a[i][2])
    {
      if(b[a[i][1]].c[1]+b[a[i][1]].ch<=0)break;
      a[i][2]=1;
      b[p].c[0]--;
      b[a[i][1]].c[1]--;
      if(b[a[i][1]].c[1]==0)
      {
        b[a[i][1]].c[1]+=b[a[i][1]].ch;
        b[a[i][1]].ch=0;
      }
    }
    i++;
    if(a[i][0]!=a[i-1][0])break;
  }
  i=P[p];
  while(b[p].c[1])
  {
    if(!a[i][2])
    {
      a[i][2]=-1;
      b[p].c[1]--;
      b[a[i][1]].c[0]--;
    }
    i++;
    if(a[i][0]!=a[i-1][0])break;
  }
  re6(p+1);
}

int cmp(const void *a, const void *b)
{
  const int *p=(const int *)a;
  const int *q=(const int *)b;
  if(p[0]<q[0])return -1;
  if(p[0]>q[0])return 1;
  if(p[1]<q[1])return -1;
  if(p[1]>q[1])return 1;
  return 0;
}

int main()
{
  int i,p,q;
  cin>>n>>m;
  for(i=0;i<m;i++)
  {
    cin>>p>>q;
    b[p].incr();
    b[q].incr();
    if(p<q){a[i][0]=p;a[i][1]=q;}
    else {a[i][0]=q;a[i][1]=p;}

  }
  qsort(a,m,sizeof(a[0]),cmp);
  findp();
  re6(1);
  cout<<"Yes"<<endl;
  for(i=0;i<m;i++)
  {
    if(a[i][2]==1)cout<<a[i][0]<<' '<<a[i][1]<<endl;
    if(a[i][2]==-1)cout<<a[i][1]<<' '<<a[i][0]<<endl;
  }
  return 0;
}
