import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scn = new Scanner(System.in); int M = scn.nextInt(); int N = scn.nextInt(); int K = scn.nextInt(); ArrayList<Integer> li = new ArrayList<Integer>(); HashMap<Integer,Node> map = new HashMap<Integer,Node>(); int temp = 0; for(int i=1; i<M+1; i++) { for(int j=1; j<N+1; j++) { temp = scn.nextInt(); if(temp > 0) { Node node = new Node(); node.setM(i); node.setN(j); map.put(temp, node); li.add(temp); } } } Collections.sort(li); Collections.reverse(li); int maxNum = 0; int tempGo = 0; int tempBack = 0; Node tempNode = map.get(li.get(0)); tempGo = tempNode.getM() + 1; tempBack = tempNode.getN(); if(tempGo + tempBack <= K) { maxNum = li.get(0); } for(int i=1; i<li.size(); i++) { tempBack = map.get(li.get(i)).getM(); tempGo += Math.abs(map.get(li.get(i)).getN() - map.get(li.get(i-1)).getN()) + Math.abs(map.get(li.get(i)).getM() - map.get(li.get(i-1)).getM())+ 1; if(tempBack + tempGo <= K) { maxNum += li.get(i); } else { break; } } System.out.print(maxNum); } } class Node { int m; int n; public void setM(int m) { this.m = m; } public int getM() { return m; } public void setN(int n) { this.n = n; } public int getN() { return n; } }