using System;
using System.Linq;
public class Test
{
public static void Main()
{
var arr = new[,] { { 3, 3, 3, 2, 1 },
{ 2, 4, 3, 3, 3 },
{ 3, 3, 4, 3, 1 },
{ 2, 3, 5, 3, 1 } };
int width = arr.GetLength(0), height = arr.GetLength(1), length = 3, value = 3;
var h = Enumerable.Range(0, width)
.SelectMany(x => Enumerable.Range(0, height - length + 1)
.Select(y => Enumerable.Range(0, length)
.Select(o => new { x, y = y + o }))
.Where(c => c.All(p => arr[p.x, p.y] == value))
.SelectMany(c => c));
var v = Enumerable.Range(0, width - length + 1)
.SelectMany(x => Enumerable.Range(0, height)
.Select(y => Enumerable.Range(0, length)
.Select(o => new { x = x + o, y }))
.Where(c => c.All(p => arr[p.x, p.y] == value))
.SelectMany(c => c));
var all = h.Concat(v).Distinct();
Console.WriteLine(string.Join("\n", all));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgICAgICB2YXIgYXJyID0gbmV3WyxdIHsgeyAzLCAzLCAzLCAyLCAxIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMiwgNCwgMywgMywgMyB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICB7IDMsIDMsIDQsIDMsIDEgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAyLCAzLCA1LCAzLCAxIH0gfTsKICAgICAgICBpbnQgd2lkdGggPSBhcnIuR2V0TGVuZ3RoKDApLCBoZWlnaHQgPSBhcnIuR2V0TGVuZ3RoKDEpLCBsZW5ndGggPSAzLCB2YWx1ZSA9IDM7CiAgICAgICAgdmFyIGggPSBFbnVtZXJhYmxlLlJhbmdlKDAsIHdpZHRoKQogICAgICAgICAgICAgICAgICAgICAgICAgIC5TZWxlY3RNYW55KHggPT4gRW51bWVyYWJsZS5SYW5nZSgwLCBoZWlnaHQgLSBsZW5ndGggKyAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5TZWxlY3QoeSA9PiBFbnVtZXJhYmxlLlJhbmdlKDAsIGxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5TZWxlY3QobyA9PiBuZXcgeyB4LCB5ID0geSArIG8gfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldoZXJlKGMgPT4gYy5BbGwocCA9PiBhcnJbcC54LCBwLnldID09IHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuU2VsZWN0TWFueShjID0+IGMpKTsKICAgICAgICB2YXIgdiA9IEVudW1lcmFibGUuUmFuZ2UoMCwgd2lkdGggLSBsZW5ndGggKyAxKQogICAgICAgICAgICAgICAgICAgICAgICAgIC5TZWxlY3RNYW55KHggPT4gRW51bWVyYWJsZS5SYW5nZSgwLCBoZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlNlbGVjdCh5ID0+IEVudW1lcmFibGUuUmFuZ2UoMCwgbGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlNlbGVjdChvID0+IG5ldyB7IHggPSB4ICsgbywgeSB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2hlcmUoYyA9PiBjLkFsbChwID0+IGFycltwLngsIHAueV0gPT0gdmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5TZWxlY3RNYW55KGMgPT4gYykpOwogICAgICAgIHZhciBhbGwgPSBoLkNvbmNhdCh2KS5EaXN0aW5jdCgpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCJcbiIsIGFsbCkpOwoJfQp9