#include<cstdio>
#include<vector>
#include<cmath>

#define mp make_pair
#define pii pair<int,int>
using namespace std;

vector<pii> e;
int v[100000], in[1<<10], out[1<<10], n, m;

void read() {
    
        scanf("%d%d", &n, &m);
        int i;
        
        for( i=0; i<m; ++i ) {
            
            int p, q;
            scanf("%d%d", &p, &q);
            p--, q--;
            e.push_back(mp(p,q));
            in[q]++;
            out[p]++;
        }
}

void print() {
    
    int i;
    printf("Yes\n");
    
    for( i=0; i<m; ++i )
        if( v[i] ) printf("%d %d\n", e[i].second+1, e[i].first+1);
        else printf("%d %d\n", e[i].first+1, e[i].second+1);
        
    exit(0);
}

bool check () {
    
    int i;
    for( i=0; i<n; ++i ) 
        if( abs(in[i]-out[i]) > 1 ) return 0;
    return 1;
}

void go ( int k ) {
    
    if( k==n-1 ) {
        
        if( check() ) print();
        
        v[k]=1;
        in[e[k].second]--; 
        out[e[k].second]++; 
        in[e[k].first]++; 
        out[e[k].first]--;
        
        if( check() ) print();
        
        v[k]=0;
        in[e[k].second]++;
        out[e[k].second]--;
        in[e[k].first]--;
        out[e[k].first]++;
        return;
    }
    
    go( k+1 );
    
    v[k]=1;
    in[e[k].second]--; 
    out[e[k].second]++; 
    in[e[k].first]++; 
    out[e[k].first]--;
    
    go( k+1 );
    v[k]=0;
    in[e[k].second]++;
    out[e[k].second]--;
    in[e[k].first]--;
    out[e[k].first]++;
    return;
}

void solve () {
    
    go(0);
    printf("No\n");
}

main () {
    
     read();
     solve();
     return 0;
}
