#include <iostream>
#include <malloc.h>
using namespace std;
int main()
{
	int getRow = 0;
	int getCol = 0;
	int greatestNum = 0;
	int currentRow = 0;
	int currentCol = 0;
	int **lawn;
	int temp = 0;
	cin >> getRow >> getCol;
	while((getRow < 3) || (getCol < 3))
		cin >> getRow >> getCol;
	lawn = (int**)malloc(sizeof(int) * getRow);
	for(int i = 0; i < getRow; i++)
		*(lawn + i) = (int*)malloc(sizeof(int) * getCol);
	for(int i = 0; i < getRow; i++)
	{
		for(int j = 0; j < getCol; j++)
			cin >> lawn[i][j];
	}
	for(int i = 0; i < (getRow - 2);i++)
	{
		for(int j = 0; j < (getCol - 2); j++)
		{
			temp = lawn[i][j] + lawn[i][j + 1] + lawn[i][j + 2] + 
				lawn[i + 1][j] + lawn[i + 1][j + 1] + lawn[i + 1][j + 2] + 
				lawn[i + 2][j] + lawn[i + 2][j + 1] + lawn[i + 2][j + 2];
			if(temp > greatestNum)
			{
				greatestNum = temp;
				currentRow = i + 1;
				currentCol = j + 1;
			}
		}
	}
	cout << greatestNum << endl << currentRow << " " << currentCol << endl;
	free(lawn);
	return 0;
}