#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int main()
{
    int T;
    cin >> T;

    for (int test_case = 1; test_case <= T; test_case++)
    {
        int n, m;
        cin >> n >> m;

        vector<vector<int>> cost(n, vector<int>(m));
        for (int r = 0; r < n; r++)
            for (int c = 0; c < m; c++)
                cin >> cost[r][c];

        for (int r = 0; r < n; r++) sort(cost[r].begin(), cost[r].end());

        priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
        for (int r = 0; r < n; r++)
            for (int c = 0; c < m; c++)
            {
                int tax_increase = (c + 1) * (c + 1) - c * c;
                int real_cost = cost[r][c] + tax_increase;

                pq.push({ real_cost, r });
            }

        int cnt = 0;
        int min_cost[300] = {};
        while (cnt < n)
        {
            auto record = pq.top();
            pq.pop();

            int r = record.second;
            while (r < n && min_cost[r]) r++;

            if (r < n)
            {
                cnt++;
                min_cost[r] = record.first;
            }
        }

        int sum = 0;
        for (int day = 0; day < n; day++)
            sum += min_cost[day];

        cout << "Case #" << test_case << ": " << sum << '\n';
    }
}