/*
TASK:like
LANG:C++
*/
#include<cstdio>
#include<vector>
using namespace std;
int n,m;
vector <int> v[1024];
int z1[1024],z2[1024],br[1024],br1[1024],ok[1024][1024],u[1024],a[1024];
int t,d,s,w,l;
int DFS(int i,int g)
{
 int i2,k;
 //printf("%d --- %d %d\n",i,br1[i],u[i]);
 u[i]=1;
 if(br1[i]>=2)
  for(i2=0;i2<br[i];i2++)
  {
   //printf("%d %d\n",i,v[i][i2]);
   if(ok[i][v[i][i2]]==0&&v[i][i2]==t&&g>1)
   {
    ok[i][v[i][i2]]=1;
    ok[v[i][i2]][i]=-1;
    br1[i]-=2;
    //printf("%d\n",i);
    return 1;
   }
   else
    if(u[v[i][i2]]==0&&ok[i][v[i][i2]]==0)
    {
     //printf("2\n");
     k=DFS(v[i][i2],g+1);
     if(k)
     {
      ok[i][v[i][i2]]=1;
      ok[v[i][i2]][i]=-1;
      br1[i]-=2;
      //printf("%d\n",i);
      return k;
     }
    }
  }
 return 0;
}
void DFS1(int i)
{
 int i2;
 u[i]=1;
 for(i2=0;i2<br[i];i2++)
  if(u[v[i][i2]]==0&&ok[i][v[i][i2]]==0)
  {
   DFS1(v[i][i2]);
   if(d==1)
   {
    ok[i][v[i][i2]]=w;
    ok[v[i][i2]][i]=-w;
    br1[i]-=2;
    if(br1[i]==0)s--;
    return;
   }
  }
 d=1;
 br1[i]--;
 if(a[i]==1)w=-1;
 else w=1;
 a[i]+=w;
 //printf("%d\n\n",i);
}
int main()
{
 int i,i2;
 scanf("%d%d",&n,&m);
 for(i=0;i<m;i++)
 {
  scanf("%d%d",&z1[i],&z2[i]);
  v[z1[i]].push_back(z2[i]);
  v[z2[i]].push_back(z1[i]);
  br[z1[i]]++;
  br[z2[i]]++;
  br1[z1[i]]++;
  br1[z2[i]]++;
 }
 for(i=1;i<=n;i++)
 {
  //printf("%d %d\n",i,br1[i]);
  //for(i2=1;i2<=n;i2++)
  //{
  // for(int i3=1;i3<=n;i3++)printf("%d ",ok[i2][i3]);
  // printf("\n");
  //}
  while(br1[i]>=2)
  {
   t=i;
   memset(u,0,sizeof(u));
   d=DFS(i,0);
   if(d==0)break;
   //printf("%d\n\n",d);
  }
  if(br1[i])s++;
 }
 //for(i=1;i<=n;i++)printf("%d ",br1[i]);
 //printf("\n");
 while(s)
 {
  l=0;
  for(i=1;i<=n;i++)
  {
   //printf("%d %d\n",i,br1[i]);
   if(br1[i]==1)
   {
    l=1;
    //printf("%d\n",i);
    //for(i2=1;i2<=n;i2++)printf("%d ",a[i2]);
    //printf("\n");
    memset(u,0,sizeof(u));
    d=0;
    DFS1(i);
    a[i]-=w;
    br1[i]++;
    s--;
   }
   //printf("%d --   ",i);
   //for(i=1;i<=n;i++)printf("%d ",br1[i]);
   //printf("\n");
  }
  if(l==0)break;
 }
 //for(i2=1;i2<=n;i2++)printf("%d ",a[i2]);
 //printf("\n");
 //for(i2=1;i2<=n;i2++)
 //{
 // for(int i3=1;i3<=n;i3++)printf("%d ",ok[i2][i3]);
 // printf("\n");
 //}
 printf("Yes\n");
 for(i=0;i<m;i++)
 {
  if(ok[z1[i]][z2[i]]==1)printf("%d %d\n",z1[i],z2[i]);
  else printf("%d %d\n",z2[i],z1[i]);
 }
 return 0;
}
