#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 32;
bool mat[maxn][maxn];
int v, e;
class edge
{
	public:
	edge(int a, int b)
	{
		one = a; two = b;
	}
	edge()
	{
	}
	int one, two;
};
edge edges[maxn];
bool go(int num_done)
{
	if(num_done == e)
	{
		for(int i = 1; i < v+1; ++i)
		{
			int sum = 0;
			for(int j = 1; j < v+1; ++j)
			{
				if(mat[i][j]) ++sum;
				if(mat[j][i]) --sum;
			}
			if(!(sum<2 && sum > -2)) return false;
		}
		puts("Yes");
		for(int i = 0; i < e; ++i)
		{
			if(mat[edges[i].one][edges[i].two]) printf("%d %d\n", edges[i].one, edges[i].two);
			else printf("%d %d\n", edges[i].two, edges[i].one);
		}
		return true;
	}
	else
	{
		int x = edges[num_done].one, y = edges[num_done].two;
		mat[x][y] = false;
		if(go(num_done+1)) return true;
		mat[x][y] = true;
		mat[y][x] = false;
		if(go(num_done+1)) return true;
		mat[y][x] = true;
		return false;
	}
}
int main()
{
	if(e>30) {puts("No"); return 0;}
	scanf("%d %d", &v, &e);
	for(int i = 0; i < e; ++i)
	{
		int p, q;
		scanf("%d %d", &p, &q);
		mat[p][q] = true;
		mat[q][p] = true;
		edges[i] = edge(p, q);
	}
	if(!go(0)) puts("No");
	return 0;
}
