#include<bits/stdc++.h>
using namespace std;
long long n,head=0,tail=0,ti=0,x;
struct o{
long long len,num,t;
vector<long long>nxt;
}a[10005];
queue<o>q;
int main(){
cin>>n;
for(int i=0;i<n;i++){
a[i].num=0;
int y;
cin>>y>>x;
a[i].len=x;
a[i].t=a[i].len;
while(cin>>x){
if(x==0) break;
a[x].nxt.push_back(i);
a[i].num++;
}
if(a[i].num==0){
q.push(a[i]);
tail++;
}
}
while(!q.empty()){
o f=q.front();
for(int i=0;i<f.nxt.size();i++){
a[f.nxt[i]].t=max(a[f.nxt[i]].t,a[f.nxt[i]].len+f.t);
a[f.nxt[i]].num--;
ti=max(ti,a[f.nxt[i]].t);
if(a[f.nxt[i]].num==0){
q.push(a[f.nxt[i]]);
}
}
q.pop();
}
cout<<ti<<endl;
for(int i=0;i<n;i++) ti=max(ti,a[i].t);
cout<<ti;
return 0;
}