#include <bits/stdc++.h>
using namespace std;
int a[500][500];
int d[500][500];
long long int ans[500];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      int num;
      cin >> num;
      a[i][j] = num;
      d[i][j] = num;
    }
  }
  int b[n];
  for (int i = 0; i < n; i++) {
    cin >> b[i];
    b[i]--;
  }
  reverse(b, b + n);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      for (int s = 0; s < n; s++) {
        d[j][s] = min(d[j][s], d[j][b[i]] + d[b[i]][s]);
      }
    }
    for (int j = 0; j <= i; j++) {
      for (int s = 0; s <= i; s++) {
        ans[i] += d[b[j]][b[s]];
      }
    }
  }
  reverse(ans, ans + n);
  for (int i = 0; i < n; i++) cout << ans[i] << " ";
  return 0;
}
