#include using namespace std; int a[21][21] = {}; int s[22][22] = {}; int sum(int x1, int y1, int x2, int y2) { return s[x2][y2] - s[x1][y2] - s[x2][y1] + s[x1][y1]; } int main() { int n, t; cin >> n >> t; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { s[i + 1][j + 1] = s[i + 1][j] + s[i][j + 1] - s[i][j] + a[i][j]; } } double c[21][21] = {}; const double alpha = .8; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { c[i][j] = 0; for (int x = 0; x < n; x++) { for (int y = 0; y < n; y++) { int d = abs(i - x) + abs(j - y); c[i][j] += a[x][y] * pow(alpha, d); } } } } // (1) Find the cell with the largest c int si = 0, sj = 0; double maxc = -1e18; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (c[i][j] > maxc) { maxc = c[i][j]; si = i; sj = j; } } } vector> visited(n, vector(n, false)); int ci = si, cj = sj; visited[ci][cj] = true; cout << ci << ' ' << cj << endl; vector> path; int moves = 1; int di[4] = {-1, 1, 0, 0}, dj[4] = {0, 0, -1, 1}; while (moves < t) { int ni = -1, nj = -1; double best = -1e18; for (int d = 0; d < 4; d++) { int ti = ci + di[d], tj = cj + dj[d]; if (ti < 0 || ti >= n || tj < 0 || tj >= n) continue; if (visited[ti][tj]) continue; if (c[ti][tj] > best) { best = c[ti][tj]; ni = ti; nj = tj; } } if (ni == -1) break; ci = ni; cj = nj; visited[ci][cj] = true; path.emplace_back(ci, cj); moves++; } cout<