#include <bits/stdc++.h>
using namespace std;
const int maxn = 579;
int d[maxn][maxn];
int ord[maxn];
long long ans[maxn];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < (int)(n); i++) {
    for (int j = 0; j < (int)(n); j++) {
      cin >> d[i][j];
    }
  }
  for (int i = 0; i < (int)(n); i++) {
    cin >> ord[i];
    ord[i]--;
  }
  reverse(ord, ord + n);
  for (int k = 0; k < (int)(n); k++) {
    for (int i = 0; i < (int)(n); i++) {
      for (int j = 0; j < (int)(n); j++) {
        d[ord[i]][ord[j]] =
            min(d[ord[i]][ord[j]], d[ord[i]][ord[k]] + d[ord[k]][ord[j]]);
        if (i <= k && j <= k) ans[k] += d[ord[i]][ord[j]];
      }
    }
  }
  reverse(ans, ans + n);
  for (int i = 0; i < (int)(n); i++) cout << ans[i] << " ";
  cout << endl;
  return 0;
}
