#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
const int N=1000; // حداکثر تعداد رئوس
int n, m; // تعداد راس‌ها و یالها که از ورودی می‌خوانیم
vector<int> g[N]; // پشته نگه‌دارنده گراف
bool Sflag[N]; // بررسی ورود به هر راس
bool Eflag[N]; // بررسی خروج به هر راس
 
bool dfs (int v) {
	Sflag[v]=true;
	for(int i=0; i<g[v].size(); i++){
		if(Sflag[g[v][i]] && !Eflag[g[v][i]])
			return false;
		if(!Sflag[g[v][i]])
			if(!dfs(g[v][i]))
				return false;
	}
	Eflag[v]=true;
	return true;
}
bool test_graph(){
	fill_n(Sflag,n,false);
	fill_n(Eflag,n,false);
	for(int i=0; i<n;i++)
		if(!Sflag[i])
			if(dfs(i)==false)
				return false;
				
	return true;	
}
 
int main() {
	cin >> n>>m;
	for(int i=0; i<m; i++){
		int t,r;
		cin >>t>>r; 
		g[--t].push_back(--r);
                /* 
                * است n است ولی بازه معتبر راس ها در ورودی ۱ تا n-۱ بازه معتبر راس ها برای ما صفر تا 
                * پس ما باید قبل از ذخیره‌یکی از آن‌ها کم کنیم
                */
	}
	if(test_graph()==true)
		cout << "No Cycle"<<endl;
	else
		cout << "There is a Cycle"<<endl;

}