#include "grid.h"

#include <chrono>
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

static ofstream graderTimeFile;

static chrono::steady_clock::time_point startT;
static chrono::steady_clock::time_point endT;

static double totalGraderTime = 0;

static void startTime() { startT = chrono::steady_clock::now(); }

static void writeTime() {
    if (graderTimeFile.is_open()) {
        graderTimeFile << "io-time: " << totalGraderTime << endl;
    }
}

static void endTime(bool write = true) {
    endT = chrono::steady_clock::now();
    double time =
        chrono::duration_cast<chrono::duration<double>>(endT - startT).count();
    totalGraderTime += time;
    if (write) {
        writeTime();
    }
}

const string password =
    "f52ed58552c953b41d396a693f3468998261fa3da6622ad8b23e9343bc1a7388";

int main(int argc, char *argv[]) {
    if (argc > 1) {
        graderTimeFile.open(argv[1]);
    }

    startTime();
    int n, m, c;
    cin >> n >> m >> c;
    vector<vector<int>> inp(n, vector<int>(m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> inp[i][j];
        }
    }
    endTime();

    long long ans = max_profit(n, m, c, inp);
    cout << password << endl << ans << endl;
    return 0;
}
