#include <bits/stdc++.h>
using namespace std;
double d;
int n, x, xx, y, yy, cnt, cir, rec;
bool f[2010][2010], s[2010][2010];
double dis(int x, int y, int i, int j) {
  return sqrt((x - i) * (x - i) + (y - j) * (y - j));
}
void dfs(int i, int j) {
  if (dis(x, y, i, j) > d) xx = i, yy = j, d = dis(x, y, i, j);
  f[i][j] = 0;
  if (f[i][j - 1]) dfs(i, j - 1);
  if (f[i][j + 1]) dfs(i, j + 1);
  if (f[i - 1][j]) dfs(i - 1, j);
  if (f[i + 1][j]) dfs(i + 1, j);
}
void dfs2(int i, int j) {
  cnt++;
  if (dis(x, y, i, j) > d) xx = i, yy = j, d = dis(x, y, i, j);
  s[i][j] = 0;
  if (s[i][j - 1]) dfs2(i, j - 1);
  if (s[i][j + 1]) dfs2(i, j + 1);
  if (s[i - 1][j]) dfs2(i - 1, j);
  if (s[i + 1][j]) dfs2(i + 1, j);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) scanf("%d", &f[i][j]);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      s[i][j] = (f[i - 1][j - 1] + f[i - 1][j] + f[i - 1][j + 1] + f[i][j - 1] +
                 f[i][j] + f[i][j + 1] + f[i + 1][j + 1] + f[i + 1][j] +
                 f[i + 1][j + 1]) > 4;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) f[i][j] = s[i][j];
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (s[i][j]) {
        d = 0;
        x = xx = i;
        y = yy = j;
        cnt = 0;
        dfs(i, j);
        d = 0;
        x = xx;
        y = yy;
        dfs2(xx, yy);
        if (cnt < 100) continue;
        if ((double)cnt / (d * d) > 0.625)
          cir++;
        else
          rec++;
      }
  printf("%d %d\n", cir, rec);
}
