#include <bits/stdc++.h>
typedef struct {
  int x;
  int y;
} Punto;
int main() {
  int n, m, i, j, l, p, k;
  scanf("%d%d", &n, &m);
  int mat[n + 2][m + 2];
  memset(mat, 0, sizeof(mat));
  int filas[n], columnas[m];
  memset(filas, 0, sizeof(filas));
  memset(columnas, 0, sizeof(columnas));
  p = 0;
  for (i = 1; i < n + 1; i++) {
    l = 0;
    for (j = 1; j < m + 1; j++) {
      scanf("%d", &mat[i][j]);
      filas[p] += mat[i][j];
      columnas[l] += mat[i][j];
      l++;
    }
    p++;
  }
  Punto final;
  final.x = 0;
  final.y = 0;
  bool primero = true, cambiar = false;
  long long int tiempox = 0, aux;
  for (j = 0, k = 0; j <= n * 4 && k <= n + 1; j += 4, k++) {
    aux = 0;
    i = 0;
    for (p = 2; p < n * 4; p = p + 4) {
      aux += filas[i] * (pow(j - p, 2));
      i++;
    }
    if (primero == true) {
      tiempox = aux;
      cambiar = true;
      primero = false;
    } else if (aux < tiempox) {
      tiempox = aux;
      cambiar = true;
    }
    if (cambiar == true) {
      final.x = k;
      cambiar = false;
    }
  }
  primero = true, cambiar = false;
  long long int tiempoy = 0;
  for (j = 0, k = 0; j <= m * 4 && k <= m + 1; j += 4, k++) {
    aux = 0;
    i = 0;
    for (p = 2; p < m * 4; p = p + 4) {
      aux += (columnas[i] * (pow(j - p, 2)));
      i++;
    }
    if (primero == true) {
      tiempoy = aux;
      cambiar = true;
      primero = false;
    } else if (aux < tiempoy) {
      tiempoy = aux;
      cambiar = true;
    }
    if (cambiar == true) {
      final.y = k;
      cambiar = false;
    }
  }
  printf("%I64d\n%d %d", tiempox + tiempoy, final.x, final.y);
  return 0;
}
