#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10010;
vector<int> e[MAXN];
bool vis[MAXN];
int match[MAXN];
bool find(int v){
    for(size_t i = 0; i < e[v].size(); i++){
        int u = e[v][i];
        if(!vis[u]){
            vis[u] = true;
            if(match[u] == -1 || find(match[u])){
                match[u] = v;
                return true;
            }
        }
    }
    return false;
}
int main(){
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= m; i++){
        int x, y;
        scanf("%d%d", &x, &y);
        e[x].push_back(y);
    }
    memset(match, -1, sizeof(match));
    for(int i = 0; i < n; i++){
        memset(vis, 0, sizeof(vis));
        if(!find(i)){
            printf("NO\n");
            return 0;
        }
    }
    printf("YES\n");
    return 0;
}



