#include <dlib/optimization/max_cost_assignment.h>
#include <iostream>
#include <vector>

#include <dlib/optimization.h>

int main() {
  int n;
  std::cin >> n;

  dlib::matrix<int> matrix(n, n);

  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      int l;
      std::cin >> l;
      matrix(i, j) = -l;
    }
  }

  auto result = dlib::max_cost_assignment(matrix);

  for (auto i : result) {
    std::cout << i << ' ';
  }

  std::cout << '\n';

  int sum = 0;

  for (int i = 0; i < n; i++) {
    sum += matrix(i, result[i]);
  }

  std::cout << sum;

  return 0;
}