#include using namespace std; typedef long long ll; set learnedMoves; vector>> movelist; ll result = 0; void handleMove(int move){ auto s = learnedMoves.size(); learnedMoves.insert(move); if(s == learnedMoves.size()){ return; } result += movelist[move - 1].first; for(int neededMove : movelist[move - 1].second){ handleMove(neededMove); } } int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; movelist.reserve(n); for(int i = 0; i < n; ++i){ ll t; int k; cin >> t >> k; vector neededMoves(k); for(int j = 0; j < k; ++j){ cin >> neededMoves[j]; } movelist[i].first = t; movelist[i].second = neededMoves; } result += movelist[n - 1].first; for(int move : movelist[n - 1].second){ handleMove(move); } cout << result; cout << flush; return 0; }