#include <bits/stdc++.h>
using namespace std;
long n;
vector<pair<long, long> > k[200020];
unordered_map<long, unordered_map<long, long> > dt[4][11], chk[4][11];
long dp(int x, int y, int w, int z) {
  if (x == n) return 0;
  if (y == k[x].size()) return dp(x + 1, 0, 0, z);
  if (chk[w][z][x][y]) return dt[w][z][x][y];
  chk[w][z][x][y] = true;
  long &ret = dt[w][z][x][y] = 0;
  if (w + k[x][y].first < 4)
    ret = dp(x, y + 1, w + k[x][y].first, (z + 1) % 10) +
          k[x][y].second * ((z == 0) ? 2 : 1);
  ret = max(ret, dp(x, y + 1, w, z));
  return ret;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 0, x, p; i < n; i++) {
    cin >> x;
    for (int j = 0, y; j < x; j++) {
      cin >> y >> p;
      k[i].push_back(make_pair(y, p));
    }
  }
  cout << dp(0, 0, 0, 1);
}
