using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Numerics; class _Class { void _Do() { // var NK = Split.ints(); var N = NK[0]; var K = NK[1]; var L = Split.ints(); // var map = new int[N+1,N+1]; for (int y = 1; y <= N; y++) { var a = Split.strings()[0]; for (int x = 1; x <= N; x++) map[y,x] = int.Parse(a.Substring(x-1,1)); } // for (int i = 0; i < L.Length; i++) { var _長さ = L[i]; var _有効 = new bool[N + 1, N + 1]; { for (int x = 1; x <= N; x++) for (int y = 1; y <= N; y++) _有効[x, y] = false; } { for (int x = 1; x <= N; x++) for (int y = 1; y <= N; y++) _有効[x, y] = true; } // var x_res = 1; var y_res = 1; var _横 = true; int min = int.MaxValue; int max = int.MinValue; // for (int y = 1; y <= N; y++) { // for (int x = 1; x <= N - (_長さ - 1); x++) { var b = false; for (int s = 0; s < _長さ; s++) if (!_有効[y, x + s]) { b= true; break; } if(b ) continue; var n = 0; for (int s = 0; s < _長さ; s++) n += map[y, x + s]; if (n > max) { max = n; x_res = x; y_res = y; } } } // for (int x = 1; x <= N; x++) { // for (int y = 1; y <= N - (_長さ - 1); y++) { var b = false; for (int s = 0; s < _長さ; s++) if (!_有効[y+s, x ]) { b = true; break; } if (b) continue; var n = 0; for (int s = 0; s < _長さ; s++) n += map[y+s, x]; if (n > max) { max = n; x_res = x; y_res = y; _横 = false; } } } if (_横) { // 出力 Console.WriteLine( $"{y_res} {x_res} " + $"{y_res} {x_res + _長さ - 1}"); { for (int s = 0; s < _長さ; s++) map[y_res, x_res + s] = 1 - map[y_res, x_res + s]; } } else{ // 出力 Console.WriteLine( $"{y_res} {x_res} " + $"{y_res+_長さ-1} {x_res}"); { for (int s = 0; s < _長さ; s++) map[y_res+s, x_res] = 1 - map[y_res+s, x_res]; } } } } // static void Main(string[] args) { _(args); new _Class()._Do(); } [Conditional("DEBUG")] static void _(string[] args) { if (args.Length != 0 && File.Exists(args[0])) Console.SetIn(new StreamReader(args[0])); else Console.Error.WriteLine("in"); } } static class Split { // 1 public static string[] strings() { return Console.ReadLine().Split(); } // [2.1] -2,147,483,648 ~ +2,147,483,647 public static int[] ints() { var _s = Console.ReadLine().Split(); var x = new int[_s.Length]; for (var i = 0; i < _s.Length; i++) x[i] = int.Parse(_s[i]); return x; } // [2.2] // -9,223,372,036,854,775,808 ~ // +9,223,372,036,854,775,807 public static long[] longs() { var _s = Console.ReadLine().Split(); var x = new long[_s.Length]; for (var i = 0; i < _s.Length; i++) x[i] = long.Parse(_s[i]); return x; } public static double[] doubles() { var _s = Console.ReadLine().Split(); var x = new double[_s.Length]; for (var i = 0; i < _s.Length; i++) x[i] = double.Parse(_s[i]); return x; } public static BigInteger[] bigs() { var _s = Console.ReadLine().Split(); var x = new BigInteger[_s.Length]; for (var i = 0; i < _s.Length; i++) x[i] = BigInteger.Parse(_s[i]); return x; } }