#include #include #include #define pii pair #define vpii vector> #define mp(i,j) make_pair(i, j) using namespace std; vector> c; int n; unordered_map value; int distance(int start, int end){ int mv = 0; for (auto p: c[start]){ int id = p.first; if(c[end].count(id) > 0){ mv = max(mv, c[end][id] - c[start][id]); } } return mv; } int main (){ cin >> n; c.reserve(n); for(int i = 0; i < n; ++i){ c[i] = unordered_map(); value[i] = 0; int nc; cin >> nc; for (int j = 0; j < nc; ++j){ int id; cin >> id; int val; cin >> val; c[i][id] = val; } } for (int i = n-2; i >= 0; --i){ for (int j = i+1; j < n; ++j){ value[i] = max(value[i], distance(i,j) + value[j]); } } cout << value[0] << endl; return 0; }