#include
//#include
#include
#include
#include
using namespace std;
vectorgraph[5005];
vectorrev_graph[5005];
bool visited[5005];
stacks;
int najgolem=-2e9;
int najmal=2e9;
int brojac1=0;
void dfs(int node){
visited[node]=true;
for(int i=0; i>p>>t;
memset(visited, false, sizeof visited);
for(int i=0; i>a>>b;
graph[a].push_back(b);
rev_graph[b].push_back(a);
}
for(int i=1; i<=p; i++){
if(!visited[i]){
dfs(i);
}
}
memset(visited, false, sizeof visited);
while(!s.empty()){
int node=s.top();
if(!visited[node]){
rev_dfs(node);
// cout << brojac1 << endl;
if(najgolembrojac1){
najmal=brojac1;
}
brojac1=0;
brojac+=1;
}
s.pop();
}
cout<