/*
PROB: like
LANG: C++
*/
#include <iostream>
#include <cstdio>
#include <string>
#include <queue>
#include <vector>
#include <cmath>
#include <cstring>
#include <set>
#include <algorithm>
#if 0
#define eprintf(msg,...) fprintf( stderr , "Line %d: " msg "\n", __LINE__, ##__VA_ARGS__ )
#else
#define eprintf(...) 0
#endif

using namespace std;

typedef long long ll;

const int MAXN = 1 << 10;
const int MAXM = 1 << 17;

int N,M;

int deg[MAXN];
int graph[MAXN][MAXN];

void calc(){
  for( int i = 0 ; i < N ; i++ ){
    for( int j = 0 ; j < N ; j++ )
      deg[i] += graph[i][j];
  }
}

int used[MAXN];
int edges[MAXM][2];

int check( int state ){
    int indeg[22];
    int outdeg[22];
    
    memset( indeg , 0 , sizeof( indeg ) );
    memset( outdeg , 0 , sizeof( outdeg ) );
    
    for( int i = 0 ; i < M ; i++ ){
        if( state & ( 1 << i ) ){
            indeg[ edges[i][1] ]++; 
            outdeg[ edges[i][0] ]++;
        }else{
            indeg[ edges[i][0] ]++;
            outdeg[ edges[i][1] ]++;
        }
    }
    
    int isk = 1;
    
    for( int i = 0 ; i < N ; i++ ){
        if( indeg[i] == outdeg[i] or indeg[i] - 1 == outdeg[i] or outdeg[i] - 1 == indeg[i] )
          continue;
        else
          isk = 0;
    }
    
    return isk;
}

int main( int argc, char* argv[] ){
    //freopen( "like.in" , "r" , stdin );
    //freopen( "like.out" , "w" , stdout );
    
    scanf("%d %d", &N, &M);
    
    for( int i = 0 ; i < M ; i++ ){
        int a,b;
        scanf("%d %d", &a, &b);
        a--,b--;
        
        graph[a][b] = graph[b][a] = 1;   
        edges[i][0] = a, edges[i][1] = b;
    }
    
    calc();
    
    for( int i = 0 ; i < N ; i++ ){
        eprintf("Node #%d has a degree of %d", i, deg[i]);
    }
    for( int i = 0 ; i < M ; i++ ){
      eprintf("Edge #%d -> %d %d", i, edges[i][0], edges[i][1]);
    }
    
    for( int i = 0 ; i < ( 1 << M ) ; i++ ){
        if( check( i ) ){
            printf("Yes\n");
            for( int j = 0 ; j < M ; j++ ){
                if( i & ( 1 << j ) ){
                  printf("%d %d\n", 1+edges[j][0], 1+edges[j][1]); 
                }else{
                  printf("%d %d\n", 1+edges[j][1], 1+edges[j][0]);
                }
            }
            return 0;
        }
    }
    
    printf("No\n");
    
    return 0;
}
