#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;

vector< int > c;

void dfs( int x ) {
    while( cnt[x] < E[x].size() ) {
        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, ans[b][x] = g^1;
        x = 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 ) {
        c.push_back( i );
        if( E[i].size() ) f = i;
    }

    while( f != -1 ) {
        dfs( f );
        if( cnt[f] == E[f].size() ) {
            f = -1;
            for( int i = 0; i < c.size(); ++i )
                if( cnt[ c[i] ] == E[ c[i] ].size() ) {
                    swap( c[i], c.back() );
                    c.pop_back();
                    --i;
                } else f = c[i];
        }
        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;
}
