#include <bits/stdc++.h>
using namespace std;
inline long long int read() {
  long long int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
const long long int MOD = 1e9 + 7, N = 112345;
int main() {
  long long int n = read();
  long long int a[n][n], d1[n << 1], d2[n << 1];
  priority_queue<pair<long long int, pair<long long int, long long int> > > eve,
      odd;
  memset(d1, 0, sizeof d1);
  memset(d2, 0, sizeof d2);
  for (long long int i = 0; i < n; i++)
    for (long long int j = 0; j < n; j++) {
      a[i][j] = read();
      d1[(i + j) % (n << 1)] += a[i][j];
      d2[i - j + n] += a[i][j];
    }
  for (long long int i = 0; i < n; i++)
    for (long long int j = 0; j < n; j++) {
      auto temp = make_pair(d1[(i + j) % (n << 1)] + d2[(i - j + n)] - a[i][j],
                            make_pair(i, j));
      if ((i + j) & 1)
        odd.push(temp);
      else
        eve.push(temp);
    }
  auto cell1 = odd.top(), cell2 = eve.top();
  cout << cell1.first + cell2.first << "\n";
  cout << 1 + cell1.second.first << " " << 1 + cell1.second.second << " ";
  cout << 1 + cell2.second.first << " " << 1 + cell2.second.second << "\n";
  return 0;
}
