#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

typedef pair<int,int> pii;

int n, m;
int a[1024][1024]; //1 - i->j; 2 - i<-j; 0 - i<->j
int par[1024];
vector<int> g[1024];

bool dfs( int v )
{
    int i, u;
    int j, k;
    bool r = 0;
    for ( i = 0; i < g[v].size(); i++ )
    {
        u = g[v][i];
        if ( ( a[v][u] == 0 ) && ( par[u] == -1 ) )
        {
            par[u] = v;
            if ( dfs( u ) == 1 )
            {
                return 1;
            }
        }
        else if ( ( a[v][u] == 0 ) && ( par[u] != -1 ) && ( par[v] != u ) )
        {
            j = v;
            k = par[v];
            while ( j != u )
            {
                a[k][j] = 1;
                a[j][k] = 2;
                j = k;
                k = par[k];
            }
            a[v][u] = 1;
            a[u][v] = 2;
            return 1;
        }
    }
    return r;
}

void solve( int v, int s )
{
    int i, j, k, u;
    for ( i = 0; i < g[v].size(); i++ )
    {
        u = g[v][i];
        if ( a[v][u] == 0 )
        {
            if ( par[u] == -1 )
            {
                par[u] = v;
                if ( s == -1 )
                {
                    a[u][v] = 1;
                    a[v][u] = 2;
                    s++;
                    solve( u, -1 );
                }
                else
                {
                    a[v][u] = 1;
                    a[u][v] = 2;
                    s--;
                    solve( v, 1 );
                }
            }
        }
    }
}

int main()
{
    int i, j, k;

    memset( a, -1, sizeof( a ) );

    scanf( "%d %d", &n, &m );
    for ( i = 1; i <= m; i++ )
    {
        scanf( "%d %d", &j, &k );
        a[j][k] = 0;
        a[k][j] = 0;
        g[j].push_back( k );
        g[k].push_back( j );
    }

    while ( 1 )
    {
        k = 0;
        memset( par, -1, sizeof( par ) );
        for ( i = 1; i <= n; i++ )
        {
            if ( par[i] == -1 )
            {
                par[i] = 0;
                if ( dfs( i ) == 1 )
                {
                    k = 1;
                    break;
                }
            }
        }
        if ( k == 0 )
            break;
    }

    //ostatna darvo;
    memset( par, -1, sizeof( par ) );
    for ( i = 1; i <= n; i++ )
    {
        if ( par[i] == -1 )
        {
            par[i] = 0;
            solve( i, 0 );
        }
    }

    printf( "Yes\n" );
    for ( i = 1; i <= n; i++ )
    {
        for ( j = 1; j <= n; j++ )
        {
            if ( a[i][j] == 1 )
            {
                printf( "%d %d\n", i, j );
            }
        }
    }
    return 0;
}
