#include <bits/stdc++.h>
using namespace std;
int global_index;
int calc(int order[5], int g[5][5]) {
  int t = 0;
  t += g[order[0] - 1][order[1] - 1];
  t += g[order[1] - 1][order[0] - 1];
  t += g[order[2] - 1][order[3] - 1];
  t += g[order[3] - 1][order[2] - 1];
  t += g[order[1] - 1][order[2] - 1];
  t += g[order[2] - 1][order[1] - 1];
  t += g[order[3] - 1][order[4] - 1];
  t += g[order[4] - 1][order[3] - 1];
  t += g[order[2] - 1][order[3] - 1];
  t += g[order[3] - 1][order[2] - 1];
  t += g[order[3] - 1][order[4] - 1];
  t += g[order[4] - 1][order[3] - 1];
  return t;
}
void printArray(int arr[5], int n) {
  for (int i = 0; i < n; i++) cout << arr[i] << " ";
  cout << endl;
}
void permute(int order[5]) {
  if (global_index == 4) {
    global_index = 0;
  }
  char temp = order[global_index];
  order[global_index] = order[global_index + 1];
  order[global_index + 1] = temp;
  global_index = global_index + 1;
}
int notrepeating(int order[5]) {
  for (int i = 0; i < 5; i++)
    for (int j = i + 1; j < 5; j++) {
      if (order[j] == order[i]) return 0;
    }
  return 1;
}
int main() {
  int arr[5][5];
  for (int i = 0; i < 5; i++)
    for (int j = 0; j < 5; j++) cin >> arr[i][j];
  int order[5] = {1, 2, 3, 4, 5};
  int max = calc(order, arr), temp, x = 0;
  for (int a1 = 0; a1 < 5; a1++)
    for (int a2 = 0; a2 < 5; a2++)
      for (int a3 = 0; a3 < 5; a3++)
        for (int a4 = 0; a4 < 5; a4++)
          for (int a5 = 0; a5 < 5; a5++) {
            order[0] = a1 + 1;
            order[1] = a2 + 1;
            order[2] = a3 + 1;
            order[3] = a4 + 1;
            order[4] = a5 + 1;
            if (notrepeating(order)) {
              temp = calc(order, arr);
              if (temp > max) max = temp;
            }
          }
  cout << max;
  return 0;
}
