#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<queue>
using namespace std;
int n,m;
int used[1001];
queue<int > q,qq;
int vh[1001],izh[1001],ost,br;
int a[100000],b[100000];
void read()
{
     cin>>n>>m;
     for(int i=0;i<m;i++)
     {
             scanf("%d%d",&a[i],&b[i]);
             used[a[i]]++;
             used[b[i]]++;
             q.push(i);
     }
     for(int i=1;i<=n;i++)
     {
            // cout<<used[i]<<endl;
             if(used[i]%2==0){vh[i]=used[i]/2;izh[i]=used[i]/2;}
             else
             {
                 if(!ost)
                 {
                 vh[i]=used[i]/2;
                 izh[i]=used[i]/2;
                 izh[i]++;
                 ost++;
                 }
                 else
                 {
                     vh[i]=used[i]/2;
                     izh[i]=used[i]/2;
                     vh[i]++;
                     ost--;
                 }
             }
     }
     //for(int i=1;i<=n;i++)
       //   cout<<vh[i]<<' '<<izh[i]<<endl;     
}
void razm()
{
     //cout<<qq.size()<<"asd"<<endl;
     while(!qq.empty())
     {
      int i=qq.front();
      qq.pop();
      if(used[a[i]]%2==1)
     swap(vh[a[i]],izh[a[i]]);
           if(used[b[i]]%2==1)
     swap(vh[b[i]],izh[b[i]]);
     }
}
int solve()
{
    queue<int> q2;
     while(!q.empty())
         {
                 int i=q.front();
                 q.pop();
                         //cout<<"br="<<br<<endl;
                 if(izh[a[i]]&&vh[b[i]])
                 {
                                        izh[a[i]]--;
                                        vh[b[i]]--;
                                       // br++;
                                       // cout<<a[i]<<' '<<b[i]<<endl;
       //                                 cout<<izh[a[i]]<<' '<<vh[b[i]]<<"hmm"<<endl;
                 }
                 else
                 if(vh[a[i]]&&izh[b[i]])
                 {
                                        vh[a[i]]--;
                                        izh[b[i]]--;
                                        swap(a[i],b[i]);
                                        //br++;
                                     //   cout<<a[i]<<' '<<b[i]<<endl;
           //                             cout<<izh[a[i]]<<' '<<vh[b[i]]<<"hmm"<<endl;
                 }
                 else q2.push(i);
         }
         while(!q2.empty())
         {
                           q.push(q2.front());
                           qq.push(q2.front());
                           q2.pop();
         }
         return q.size();
     }
void print()
{
     cout<<"Yes"<<endl;
     for(int i=0;i<m;i++)
     cout<<a[i]<<' '<<b[i]<<endl;     
     }
int main()
{
    read();
    int test1,test2;
    test1=solve();
    if(test1==0)
    print();
    else
    while(1)
    {
    razm();
    test2=solve();
 //   cout<<test1<<' '<<test2<<endl;
    if(test2==0){print();break;}
    else
    if(test2==test1){cout<<"No"<<endl;break;}
    else
    test1=test2;
    }
    return 0;
}   
