#include <cstdio>
#include <vector>

using namespace std;

vector< int > A, B;
vector< int > E[1005];
int p[1005], cnt[1005];
bool bio[1005][1005];
int ans[1005][1005];

int g = 1;

void dfs( int x ) {
    if( cnt[x] == E[x].size() ) return;
    while( bio[x][ E[x][p[x]] ] ) p[x]++;
    int b = E[x][ p[x] ];
    bio[x][b] = bio[b][x] = 1;
    cnt[x]++, cnt[b]++;
    ans[x][b] = g;
    dfs( b );
}

int main( void ) {
    int n, m;
    scanf( "%d %d", &n, &m );
    for( int i = 0; i < m; ++i ) {
        int a, b;
        scanf( "%d %d", &a, &b ); --a, --b;
        E[a].push_back( b );
        E[b].push_back( a );
        A.push_back( a );
        B.push_back( b );
    }

    int f = -1;
    for( int i = 0; i < n; ++i )
        if( cnt[i] < E[i].size() ) { f = i; break; }

    while( f != -1 ) {
        dfs( f );
        if( cnt[f] == E[f].size() ) {
            f = -1;
            for( int i = 0; i < n; ++i )
                if( cnt[i] < E[i].size() ) { f = i; break; }
        }
        g ^= 1;
    }

    puts( "Yes" );
    for( int i = 0; i < m; ++i )
        if( ans[ A[i] ][ B[i] ] ) printf( "%d %d\n", A[i]+1, B[i]+1 ); else
            printf( "%d %d\n", B[i]+1, A[i]+1 );
    return 0;
}
