import sys import time start = time.perf_counter() raw = sys.stdin.read().split() if not raw: sys.exit() n = int(raw[0]) t = int(raw[1]) g = [] idx = 2 for i in range(n): row = [] for j in range(n): v = int(raw[idx]) row.append(v) idx = idx+1 g.append(row) init = [] for r in range(n): for c in range(n): s = g[r][c] fid = r*n+c bit = 1< lim: break init.sort(key=lambda x:x[0],reverse=True) bm = [] full = False if len(init) > bw: for i in range(bw): bm.append(init[i]) full = True else: bm = init over = False for _ in range(t-1): nxt = [] for cur in bm: cs = cur[0] cr = cur[1] cc = cur[2] cv = cur[3] cp = cur[4] if cs > mx: mx = cs res_p = cp for i in range(4): nr = cr+dr[i] nc = cc+dc[i] if nr >= 0 and nr < n: if nc >= 0 and nc < n: tid = nr*n+nc tb = 1< bw: bm = [] for i in range(bw): bm.append(nxt[i]) full = True else: bm = nxt if time.perf_counter()-start > lim: over = True break for fst in bm: if fst[0] > mx: mx = fst[0] res_p = fst[4] if over == True: break if full == False: break bw = int(bw*1.5) print(len(res_p)) for pos in res_p: y = pos[0] x = pos[1] print(f"{y} {x}")