#include <iostream>
#include <queue>
#include <vector>
#include<algorithm>
using namespace std;

bool valid;
void dfs(int node, vector<vector<int>> & graph, vector<int> & color){
    for(int child : graph[node]){
        if(color[node] == color[child])
            valid = false;
            
        if(color[child] == -1){
            color[child] = !color[node];
            dfs(child, graph, color);
        }
    }

    
    
}
int main(){

    int nodes, from, to;
    
    while(cin >> nodes){
        valid = true;
        if(nodes == 0)
            break;
        vector<vector<int>> graph(nodes + 1);
        vector<int> color(nodes + 1, -1);
        
        while(cin >> from >> to){
            if(from == 0 && to == 0)
                break;
            
            graph[from].push_back(to);
            graph[to].push_back(from);
            
        }
        for(int node = 1; node <= nodes; ++node){
            if(color[node] == -1){
                color[node] = 1;
                dfs(node, graph, color);
            }
        }
        if(valid)
            cout <<"YES\n";
        else 
            cout <<"NO\n";
    }

/* */
}