#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>
#include <map>
#include <cmath>
#include <bitset>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <tuple>
#include <atcoder/all>
#include <sstream> // std::stringstream
#include <regex>
using namespace atcoder;
//using mint = modint998244353;
using mint = modint1000000007;
using namespace std;
using ll = long long;
static const double pi = 3.141592653589793;
const int INF = (1<<29);
const ll mod = 998244353;

int main() {
    int n,m;
    cin >> n >> m;
    dsu uf(2*n);
    for(int i=0;i<m;i++){
        int a,b;
        cin >> a >> b;
        a--;b--;
        uf.merge(a,b+n);
        uf.merge(n+a,b);
    }

    bool ans = true;
    for(int i=0;i<n;i++){
        if(!uf.same(i,i+n)) ans = false; 
    }
    if(ans) cout << "Yes" <<endl;
    else cout << "No" << endl;

}