#include <bits/stdc++.h>
using namespace std;
long long maxi = LLONG_MIN;
long long mini = LLONG_MAX;
void fast() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}
long long t, i, j, k, n, temp, flag, ans;
vector<long long> a[200005][4];
long long m[200005][4], m2[200005][4], dp[200005][10];
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int k;
    cin >> k;
    for (int j = 1; j <= k; j++) {
      int f, g;
      cin >> f >> g;
      a[i][f].push_back(g);
    }
    for (int j = 1; j <= 3; j++) sort(a[i][j].rbegin(), a[i][j].rend());
  }
  for (int i = 1; i <= n; i++) {
    if (a[i][1].size() > 0) m[i][1] = max(a[i][1][0], m[i][1]);
    if (a[i][2].size() > 0) m[i][1] = max(a[i][2][0], m[i][1]);
    if (a[i][3].size() > 0) m[i][1] = max(a[i][3][0], m[i][1]);
    if (a[i][2].size() > 0 && a[i][1].size() > 0)
      m[i][2] = max(m[i][2], a[i][1][0] + a[i][2][0]);
    if (a[i][1].size() > 1) m[i][2] = max(m[i][2], a[i][1][0] + a[i][1][1]);
    if (a[i][1].size() > 2)
      m[i][3] = max(m[i][3], a[i][1][0] + a[i][1][1] + a[i][1][2]);
  }
  for (int i = 1; i <= n; i++) {
    if (a[i][1].size() > 0) m2[i][1] = max(2 * a[i][1][0], m2[i][1]);
    if (a[i][2].size() > 0) m2[i][1] = max(2 * a[i][2][0], m2[i][1]);
    if (a[i][3].size() > 0) m2[i][1] = max(2 * a[i][3][0], m2[i][1]);
    if (a[i][2].size() > 0 && a[i][1].size() > 0)
      m2[i][2] = max(m2[i][2], 2 * max(a[i][1][0], a[i][2][0]) +
                                   min(a[i][1][0], a[i][2][0]));
    if (a[i][1].size() > 1)
      m2[i][2] = max(m2[i][2], 2 * a[i][1][0] + a[i][1][1]);
    if (a[i][1].size() > 2)
      m2[i][3] = max(m2[i][3], 2 * a[i][1][0] + a[i][1][1] + a[i][1][2]);
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < 10; j++) {
      dp[i][j] = max(dp[i][j], dp[i - 1][j]);
      for (int k = 1; k <= 3; k++) {
        if (j - k >= 0) {
          dp[i][j] = max(dp[i][j], m[i][k] + dp[i - 1][j - k]);
        } else {
          dp[i][j] = max(dp[i][j], m2[i][k] + dp[i - 1][j - k + 10]);
        }
      }
    }
  }
  for (int i = 0; i < 10; i++) {
    ans = max(ans, dp[n][j]);
  }
  cout << ans;
  return 0;
}
