#include<bits/stdc++.h>
using namespace std;
#define N 1145
vector <int> e[N];
int dfn[N],low[N],tot;
bool instk[N];stack <int>stk;
int id[N],siz[N],cnt;
void tarjan(int u){
dfn[u]=low[u]=++cnt;
stk.push(u),instk[u]=1;
for(auto v:e[u]){
if(!dfn[v]){
tarjan(v);
low[v]=min(low[v],low[u]);
}else if(instk[v]){
low[v]=min(low[v],dfn[u]);
}
}
if(dfn[u]==low[u]){
int v;++cnt;
do{
v=stk.top();
stk.pop();
instk[v]=0;
id[v]=cnt;
siz[cnt]++;
}while(v!=u);
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
int l;
scanf("%d",&l);
while(l!=0){
e[i].push_back(l);
scanf("%d",&l);
}
}
int t_in[n+1],t_out[n+1];
memset(t_in,0,sizeof(t_in));
memset(t_out,0,sizeof(t_out));
for(int i=1;i<=n;i++){
if(!dfn[i])tarjan(i);
}
for(int i=1;i<=n;i++){
for(auto j:e[i]){
if(id[i]!=id[j]){
t_in[id[j]]++;
t_out[id[i]]++;
}
}
}
if(cnt==1){
printf("1\n0");return 0;
}
int ans=0;
for(int i=1;i<=cnt;i++){
if(t_in[i]==0)ans++;
}
printf("%d\n",ans);
int ans2=0;
for(int i=1;i<=cnt;i++){
if(t_out[i]==0)ans2++;
}
printf("%d",max(ans,ans2));
return 0;
}