#include <bits/stdc++.h>
using namespace std;
int mat[3000][3000];
bool vis[3000][3000];
int n;
int cans = 0;
int dfs(int i, int j) {
  vis[i][j] = true;
  cans++;
  if (i - 1 >= 0 && mat[i - 1][j] && !vis[i - 1][j]) {
    dfs(i - 1, j);
  }
  if (j - 1 >= 0 && mat[i][j - 1] && !vis[i][j - 1]) {
    dfs(i, j - 1);
  }
  if (i + 1 < n && mat[i + 1][j] && !vis[i + 1][j]) {
    dfs(i + 1, j);
  }
  if (j + 1 < n && mat[i][j + 1] && !vis[i][j + 1]) {
    dfs(i, j + 1);
  }
}
int32_t main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) scanf("%d", &mat[i][j]);
  }
  int csq = 0, ccc = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (!vis[i][j] && mat[i][j]) {
        cans = 0;
        int side = 0;
        for (int w = j; w < n; w++) {
          if (mat[i][w])
            side++;
          else
            break;
        }
        dfs(i, j);
        if (side * side == cans)
          csq++;
        else
          ccc++;
      }
    }
  }
  printf("%d %d\n", ccc, csq);
}
