/*
codr: timiter
task: like
lang: C++
*/

#include <cstdio>

using namespace std;

int n, m, e = 0;
int b[1024], p1[131072], p2[131072];
bool u[1024];
bool a[1024][1024];

int cycl(int, int);
void line(int, int);

int main()
{
    int i, j, p;
    for (i = 1; i <= 1020; i++)
    {
        for (j = 1; j <= 1020; j++)
        {
            a[i][j] = false;
        }
        b[i] = 0;
        u[i] = false;
    }

    scanf("%d %d", &n, &m);
    for (i = 0; i < m; i++)
    {
        scanf("%d %d", &j, &p);
        p1[e] = j;
        p2[e] = p;
        e++;
        a[j][p] = a[p][j] = true;
        b[j]++;
        b[p]++;
    }

    for (i = 1; i <= n; i++)
    {
        p = cycl(i, 0);
    }

    while (m > 0)
    {
        for (i = 1; i <= n; i++)
        {
            if (b[i] == 1)
            {
                line(i, 0);
            }
        }
    }

    printf("Yes\n");
    for (i = 0; i < e; i++)
    {
        if (a[p1[i]][p2[i]])
        {
            printf("%d %d\n", p1[i], p2[i]);
        }
        else
        {
            printf("%d %d\n", p2[i], p1[i]);
        }
    }

    return 0;
}

int cycl(int x, int y)
{
    int i, c;

    if (u[x])
    {
        return x;
    }

    u[x] = true;

    for (i = 1; i <= n; i++)
    {
        if (a[x][i] && a[i][x] && i != y)
        {
            c = cycl(i, x);
            if (c > 0)
            {
                a[x][i] = false;
                b[x]--;
                b[i]--;
                m--;
                if (c != x)
                {
                    u[x] = false;
                    return c;
                }
            }
        }
    }

    u[x] = false;

    return 0;
}

void line(int x, int y)
{
    int i;

    for (i = 1; i <= n; i++)
    {
        if (a[x][i] && a[i][x] && i != y)
        {
            line(i, x);
            a[x][i] = false;
            b[x]--;
            b[i]--;
            m--;
        }
    }
}
