#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<queue>
using namespace std;
int main()
{
int N = 0;
cin >> N;
vector<int> degree(N, 0);
map<int, set<int>> Map;
int begin = 0;
int end = 0;
while(cin >> begin)
{
cin >> end;
if(begin < 0 || begin > N || end < 0 || end > N)
{
cout << "yes" << endl;
return 0;
}
Map[begin].insert(end);
degree[end]++;
}
queue<int> Queue;
for(int i = 0; i < degree.size(); i++)
{
if(degree[i] == 0)
{
Queue.push(i);
}
}
while(!Queue.empty())
{
auto front = Queue.front();
Queue.pop();
for(auto n : Map[front])
{
degree[n]--;
if(degree[n] == 0)
{
Queue.push(n);
}
}
}
bool flag = true;
for(auto i : degree)
{
if(degree[i] != 0)
{
flag = false;
break;
}
}
if(flag)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
return 0;
}