#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5005;
queue<int> q;
vector<int> nbr[N];
int n,a,in[N],m,c[N];
void topo(){
for(int i=1;i<=n;i++){
if(in[i]==0){
q.push(i);
}
}
while(!q.empty()){
int cur=q.front();
q.pop();
for(int i=0;i<nbr[cur].size();i++){
int nxt=nbr[cur][i];
in[nxt]--;
if(c[cur]>c[nxt]){
c[nxt]=c[cur]+1;
}
if(in[nxt]==0){
q.push(nxt);
}
}
}
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int c;
cin>>c>>a;
in[a]++;
nbr[c].push_back(a);
}
for(int i=1;i<=n;i++){
c[i]=i;
}
topo();
int maxn=-1e18;
for(int i=1;i<=n;i++){
maxn=max(maxn,c[i]);
}
cout<<maxn%80112002;
return 0;
}