#include<iostream>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<set>
#include<algorithm>
#include<string>

#define x first
#define y second
#define SP system("pause")

using namespace std;

int n, m;
bool g[ 1005 ][ 1005 ];
int count_rib[ 1005 ];

void input()
{
    int a, b;

    cin >> n >> m;

    for ( int i = 0; i < m; i++ )
    {
        cin >> a >> b;

        g[ a ][ b ] = 1;
        g[ b ][ a ] = 1;
        count_rib[ a ]++;
        count_rib[ b ]++;
    }
}

void orientirane()
{
    int j, cr;
    for ( int k = 1; k <= n; k++ )
    {
        //cout << "  cr "  << k << " " << count_rib[ k ] << endl;
        if ( count_rib[ k ] != 0 && count_rib[ k ] % 2 != 0 ) cr = count_rib[ k ] / 2 + 1;
        else if ( count_rib[ k ] != 0 ) cr = count_rib[ k ] / 2;
        for ( int i = 0; i <  cr ; i++ )
        {
            for ( j = 1; j <= n; j++ )
            {
                if ( g[ k ][ j ] && g[ j ][ k ] )
                {
                    //cout << k << " " << j << endl;SP;
                    g[ j ][ k ] = 0;
                    count_rib[ j ]--;
                    break;
                }
            }
        }

        for ( int i = 0; i < count_rib[ k ] - cr; i++ )
        {
            for ( j = 1; j <= n; j++ )
            {
                if ( g[ j ][ k ] && g[ k ][ j ] )
                {
                    g[ k ][ j ] = 0;
                    //cout << j << " " << k << endl;SP;
                    //cout << g[ k ][ j ] << endl;
                    count_rib[ j ]--;
                    break;
                }
            }
        }
        count_rib[ k ] = 0;
    }
}

int main()
{
    input();

    orientirane();

    cout << "Yes" << endl;

    for ( int i = 1; i <= n; i++ )
    {
        for ( int j = 1; j <= n; j++ )
            if ( g[ i ][ j ] == 1 ) cout << i << " " << j << endl;
    }

    return 0;
}
/*
5 7
1 2
1 3
4 1
1 5
3 2
4 5
3 5
*/