#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>

using namespace std;

int n, m;
int a[100000], b[100000];
int d[1001];
int ms[1001][1001];
vector<int> ls[1001];
bool bio[1001];

inline int sgn(int x)
{
    return x < 0 ? -1 : !!x;
}

int dfs(int x, int f)
{
    if(sgn(d[x]) == -f)
    {
        d[x] += 2 * f;
        return 1;
    }
    
    for(int i = 0; i < ls[x].size(); ++i)
    {
        int y = ls[x][i];
        if(!bio[y] && ms[x][y] == f)
        {
            bio[y] = 1;
            if(dfs(y, f))
            {
                ms[x][y] = -ms[x][y];
                ms[y][x] = -ms[y][x];
                return 1;
            }
        }
    }
    return 0;
}

int main()
{
    scanf("%d %d", &n, &m);
    for(int i = 0; i < m; ++i)
    {
        scanf("%d %d", a+i, b+i);
        ls[a[i]].push_back(b[i]);
        ls[b[i]].push_back(a[i]);
        ms[a[i]][b[i]] = -1;
        ms[b[i]][a[i]] = 1;
        ++d[b[i]];
        --d[a[i]];
    }
    
    for(int i = 1; i <= n; ++i)
    {
        while(d[i] > 1)
        {
            memset(bio+1, 0, n);
            bio[i] = 1;
            if(dfs(i, 1))
                d[i] -= 2;
            else
                goto no;
        }
        while(d[i] < -1)
        {
            memset(bio+1, 0, n);
            bio[i] = 1;
            if(dfs(i, -1))
                d[i] += 2;
            else
                goto no;
        }
    }
    
    puts("Yes");
    for(int i = 0; i < m; ++i)
        if(ms[a[i]][b[i]] == -1)
            printf("%d %d\n", a[i], b[i]);
        else
            printf("%d %d\n", b[i], a[i]);
    
    //system("pause");
    return 0;
    
no:;
    puts("No");
    //system("pause");
    return 0;
}

/*
5 7
1 2
1 3
1 4
1 5
4 5
3 5
3 2

*/
