#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int du[N];
int vis[N];
vector<int> q[N];
int n;
queue<int> a;
int ans = 0;
int ac = 0;
void topsort()
{
while (!a.empty())
{
int acc = a.size();
ac = 0;
while (acc--)
{
int t = a.front();
a.pop();
for (int i = 0; i < q[t].size(); i++)
{
du[q[t][i]]--;
if (du[q[t][i]] == 0)
{
a.push(q[t][i]);
ac = max(ac, vis[q[t][i]]);
vis[q[t][i]] = 0;
}
}
}
ans += ac;
}
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
du[i] = 0;
}
for (int i = 1; i <= n; i++)
{
int ii, a;
cin >> ii >> a;
vis[ii] = a;
while (1)
{
int mid;
cin >> mid;
if (mid == 0)
{
break;
}
q[mid].push_back(i);
du[i]++;
}
}
for (int i = 1; i <= n; i++)
{
if (du[i] == 0)
{
a.push(i);
ans = max(ans, vis[i]);
vis[i] = 0;
}
}
topsort();
printf("%d\n", ans);
return 0;
}