import java.io.*;
import java.util.*;

public class moon_sm_slow {
	private static final int D = 25;
	private static final int CONST = 1000001;
	int[][] p;
	char[][] map;

	int check(int x, int y) {
		int ans = Integer.MAX_VALUE;
		for (int r = 0; ans > r; r++) {
			// int d = Math.max(2 * r, 1);
			for (int i = x - r; i <= x + r; i++) {
				for (int j = y - r; j <= y + r; j++) {
					if (i < 0 || i >= map.length || j < 0 || j >= map[0].length || map[i][j] == '.') {
						ans = Math.min(ans, (int) Math.ceil(Math.sqrt((i - x) * (i - x) + (j - y) * (j - y))) - 1);
					}
				}
			}
		}
		return ans;
	}

	void solve() throws IOException {
		int w = nextInt();
		assert 1 <= w && w <= 1000;
		int h = nextInt();
		assert 1 <= h && h <= 1000;
		map = new char[h][];
		int cnt = 0;
		long sx = 0;
		long sy = 0;
		for (int i = 0; i < map.length; i++) {
			map[i] = br.readLine().toCharArray();
			assert map[i].length == w;
			for (int j = 0; j < map[i].length; j++) {
				if (map[i][j] == '*') {
					cnt++;
					sx += i;
					sy += j;
				}
				assert map[i][j] == '*' || map[i][j] == '.';
			}
		}
		int it = 0;
		p = new int[cnt][2];
		for (int i = 0; i < map.length; i++) {
			for (int j = 0; j < map[i].length; j++) {
				if (map[i][j] == '*') {
					p[it][0] = i;
					p[it][1] = j;
					it++;
				}
			}
		}
		int max = -1;
		int x = -1;
		int y = -1;
		if (cnt < CONST) {
			for (int[] c : p) {
				int r = check(c[0], c[1]);
				// System.err.println(c[0] + " " + c[1] + " " + r);
				if (r > max) {
					max = r;
					x = c[0];
					y = c[1];
				}
			}
		} else {
			int cx = (int) (sx / cnt);
			int cy = (int) (sy / cnt);
			for (int i = cx - D; i <= cx + D; i++) {
				for (int j = cy - D; j <= cy + D; j++) {
					int r = check(i, j);
					if (r > max) {
						max = r;
						x = i;
						y = j;
					}
				}
			}
		}
		out.println(max);
		out.println((y + 1) + " " + (x + 1));
		// out.println((x + 1) + " " + (y + 1));
	}

	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;

	final String filename = "moon";

	public void run() {
		try {
			br = new BufferedReader(new FileReader(filename + ".in"));
			out = new PrintWriter(filename + ".out");
			solve();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
			System.exit(1);
		}
	}

	String nextToken() {
		try {
			while (st == null || !st.hasMoreTokens()) {
				String s = br.readLine();
				if (s == null) {
					return null;
				}
				st = new StringTokenizer(s);
			}
			return st.nextToken();
		} catch (IOException e) {
			throw new RuntimeException();
		}
	}

	int nextInt() {
		return Integer.parseInt(nextToken());
	}

	long nextLong() {
		return Long.parseLong(nextToken());
	}

	public static void main(String[] args) {
		new moon_sm_slow().run();
	}
}
