#include <bits/stdc++.h>
using namespace std;
long long p[510][510], n, sol[510], niz[510], bio[510];
int main() {
  scanf("%lld", &n);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      scanf("%lld", &p[i][j]);
    }
  }
  for (int i = n - 1; i >= 0; i--) {
    scanf("%lld", &niz[i]);
  }
  int br = n - 1;
  for (int k = 0; k < n; k++) {
    int d = niz[k] - 1;
    bio[d] = 1;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        p[i][j] = min(p[i][j], p[i][d] + p[d][j]);
      }
    }
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (bio[i] && bio[j]) {
          sol[br] += p[i][j];
        }
      }
    }
    br--;
  }
  for (int i = 0; i < n; i++) {
    printf("%lld ", sol[i]);
  }
  return 0;
}
