<?php
fscanf(STDIN, "%d", $n);
// 既存店の最大営業数
for ($i = 0; $i < $n; $i++) {
  $tmp = [];
  $tmp = explode(' ', trim(fgets(STDIN)));
  $f[$i] = array_sum($tmp);
}
// 利益に関する情報
for ($i = 0; $i < $n; $i++) {
  $p[$i] = explode(' ', trim(fgets(STDIN)));
}

// 利益
$profits = [];

// 各店舗の最大利益
$eigyoAri = false;
for ($i = 0; $i < $n; $i++) {
  $maxProfits[$i] = max(array_slice($p[$i], 0, $f[$i] + 1));
  $profits[$i] = $maxProfits[$i];
  $maxProfitKeys = array_keys($p[$i], $maxProfits[$i]);
  for ($j = 0; $j < count($maxProfitKeys); $j++) {
    if ($maxProfitKeys[$j] > 0) {
      $eigyoAri = true;
    }
  }
}
// 1回も営業機会がない場合
if ($eigyoAri == false) {
  for ($i = 0; $i < $n; $i++) {
    $secondMaxProfits[$i] = max(array_slice($p[$i], 1, $f[$i]));
  }
  $maxSecondProfit = max($secondMaxProfits);
  $maxSecondProfitKeys = array_keys($secondMaxProfits, $maxSecondProfit);
  $profits[max($maxSecondProfitKeys)] = $maxSecondProfit;
}
echo array_sum($profits);