#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
  int n,m,g;
  cin>>n>>m>>g;
  vector<pair<int,int>>edges(m);
  for(auto &x:edges)cin>>x.first>>x.second,x.first--,x.second--;
  vector<vector<int>>adj(n);
  for(auto &x:edges)adj[x.first].push_back(x.second);
  vector<int>f(n,-1),dep(n);
  for(int i=0;i<n;i++)
  {
      for(auto &x:adj[i])
      {
          if(dep[x]<=dep[i])
          {
              dep[x]=dep[i+1];
              f[x]=i;
          }
      }
  }
  vector<vector<bool>>reachable(n,vector<bool>(n));
  for(int i=n-1;i>=0;i--)
  {
      reachable[i][i]=1;
      if(f[i]!=-1)for(int j=0;j<n;j++)reachable[f[i]][j]=reachable[f[i]][j]|reachable[i][j];
  }
  int cnt=0;
  for(auto &x:edges)if(f[x.second]!=x.first&&reachable[x.first][x.second])cnt++;
  cout<<cnt<<" "<<1<<endl;
}
