#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, a;
  cin >> n;
  string s;
  vector<vector<char>> v1(n, vector<char>(n));
  vector<int> v2;
  for (long long i = (0); i < (n); i++) {
    cin >> a;
    v2.push_back(a);
  }
  for (long long i = (0); i < (n); i++) {
    for (long long j = (0); j < (n); j++) {
      cin >> v1[i][j];
    }
  }
  for (long long i = (0); i < (n); i++) {
    for (long long j = (0); j < (n); j++) {
      for (long long k = (0); k < (n); k++) {
        if (v1[j][i] == '1' && v1[i][k] == '1') {
          v1[k][j] = '1';
        }
      }
    }
  }
  for (long long i = (0); i < (n - 1); i++) {
    int k = i;
    for (long long j = (i + 1); j < (n); j++) {
      if (v2[k] > v2[j] && v1[i][j] == '1') {
        k = j;
      }
    }
    swap(v2[i], v2[k]);
  }
  for (long long i = (0); i < (n); i++) {
    cout << v2[i] << " ";
  }
}
