#include <bits/stdc++.h>
using namespace std;
int N, A, B, S, xma, xmi, yma, ymi,
    d[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
bool a[2005][2005], b[2005][2005];
double v[15][15];
void init() {
  scanf("%d", &N);
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++) scanf("%d", &a[i][j]);
}
void dfs(int x, int y) {
  S++, b[x][y] = 0;
  if (x < xmi || x == xmi && y < ymi) xmi = x, ymi = y;
  if (x > xma || x == xma && y > yma) xma = x, yma = y;
  for (int i = 0, xx, yy; i < 4; i++) {
    xx = x + d[i][0], yy = y + d[i][1];
    if (1 < xx && xx <= N && 1 <= yy && yy <= N && b[xx][yy]) dfs(xx, yy);
  }
}
void work() {
  int d = 2;
  for (int i = -d; i <= d; i++)
    for (int j = -d; j <= d; j++)
      v[i + d][j + d] = 1.0 / (2 * d + 1) / (2 * d + 1);
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++) {
      double s = 0;
      for (int x = -d; x <= +d; x++)
        for (int y = -d; y <= +d; y++)
          if (1 <= i + x && i + x <= N && 1 <= j + y && j + y <= N &&
              a[i + x][j + y])
            s += v[x + d][y + d];
      b[i][j] = s < 0.6 ? 0 : 1;
    }
}
void doit() {
  work();
  for (int i = 1; i <= N; i++)
    for (int j = 1, d; j <= N; j++)
      if (b[i][j]) {
        xma = yma = 0, xmi = ymi = N, S = 0, dfs(i, j),
        d = (xma - xmi) * (xma - xmi) + (yma - ymi) * (yma - ymi);
        if (d > 100)
          if (abs(d * 3.1415927 / 4 - S) / abs(d / 2.0 - S) < 0.8)
            A++;
          else
            B++;
      }
  printf("%d %d\n", A, B);
}
int main() {
  init();
  doit();
  return 0;
}
