#include<cstdio>
#include<iostream>
int a,b;
int N,M;

int known[1000][1000];
int k_c[1000];


int from[1000];

bool rem[1000][1000];

bool checked[1000];

int start, end;

bool found;

bool FindSub(int i)
{
    checked[i] = 1;
    int n;
    for(int j=0;j<k_c[i];j++)
    {
        n = known[i][j];
        if(from[i] == n || rem[i][n]) continue;
        if(from[n] == -1)
        {
            checked[n] = 1;
            from[n] = i;
            if(FindSub(n)) return 1;
        }
        else
        {
            start = i;
            end = n;
            return 1;
        }
    }
    return 0;
}

void Reset()
{
    for(int i=0; i<N; i++)
        from[i] = -1;
}

bool FindCycle()
{
    for(int i=0;i<N;i++) checked[i] = 0;

    for(int i=0; i<N; i++)
    {
        if(checked[i]) continue;
        Reset();    //from
        from[i] = i;
        found = 0;
        if(FindSub(i)) return 1;
    }
    return 0;
}

void ClearTree(int i, bool flag)
{
    checked[i] = 1;
    int n;
    for(int j=0;j<k_c[i];j++)
    {
        n = known[i][j];
        if(rem[i][n]) continue;
        if(flag)
            printf("%d %d\n", i+1, n+1);
        else
            printf("%d %d\n", n+1, i+1);
        flag = !flag;
        rem[i][n] = 1;
        rem[n][i] = 1;
        ClearTree(n, flag);
    }
}

int main()
{
    scanf("%d %d", &N, &M);

    for(int i=0;i<M;i++)
    {
        scanf("%d %d", &a, &b);
        known[a-1][k_c[a-1]++] = b-1;
        known[b-1][k_c[b-1]++] = a-1;
    }

    //return 0;

    printf("Yes\n");
    int c;
    while(FindCycle())
    {
        rem[start][end] = 1;
        rem[end][start] = 1;
        //std::cout<<"cycle"<<end<<" "<<start<<"\n";
        printf("%d %d\n", end+1, start+1);
        //return 0;
        do
        {
            rem[start][from[start]] = 1;
            rem[from[start]][start] = 1;
            //std::cout<<start<<" "<<from[start]<<"  "<<(start==from[start])<<"\n";
            printf("%d %d\n", start+1, from[start]+1);
            start = from[start];
        }
        while(start != end || start != from[start]);
    }

    for(int i=0;i<N;i++) checked[i] = 0;
    for(int i=0;i<N;i++)
        if(!checked[i]) ClearTree(i, 0);
    return 0;
}
