#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 100010, M = 200010;
int n,m,h[N],e[M],ne[M],idx,color[N];
void add(int a,int b)
{
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
bool dfs(int u,int c)
{
color[u]=c;
int i,j;
for(i=h[u];i!=-1;i=ne[i]){
j=e[i];
if(!color[j]){
if(!dfs(j,3-c))return false;
}
else if(color[j]==c)return false;
}
return true;
}
int main()
{
scanf("%d%d",&n,&m);
memset(h,-1,sizeof h);
int a,b,i;
bool flag=true;
while(m--){
scanf("%d%d",&a,&b);
add(a,b),add(b,a);
}
for(i=1;i<=n;i++)
if(!color[i]){
if(!dfs(i,1)){
flag=false;
break;
}
}
if(flag)printf("Yes\n");
else printf("No\n");
return 0;
}