#include <bits/stdc++.h>
using namespace std;
const int N = 2548;
bool g[N][N], c[N][N], v[N][N];
int ng[N][N], sg[N][N], sc[N][N];
int c_square, c_circle, n;
template <class T>
inline T sqr(T x) {
  return x * x;
}
int qx[N * N], qy[N * N], tcnt;
inline void solve(int x, int y) {
  const int dx[4] = {0, 0, 1, -1}, dy[4] = {-1, 1, 0, 0};
  int l(0), r(0);
  pair<int, int> aux(x, y);
  ++r;
  qx[r] = x;
  qy[r] = y;
  v[x][y] = true;
  while (l < r) {
    ++l;
    int cx(qx[l]), cy(qy[l]);
    for (int i = 0; i < 4; ++i) {
      int nx = cx + dx[i], ny = cy + dy[i];
      if (!v[nx][ny] && g[nx][ny]) {
        ++r;
        qx[r] = nx;
        qy[r] = ny;
        v[nx][ny] = true;
      }
    }
  }
  int sqdmax(0), s(r);
  if (s < 120) {
    ++tcnt;
    return;
  }
  for (int i = 1; i <= r; ++i) aux = min(aux, pair<int, int>(qx[i], qy[i]));
  for (int i = 1; i <= r; ++i)
    sqdmax = max(sqdmax, sqr(qx[i] - aux.first) + sqr(qy[i] - aux.second));
  if (s < (double)sqdmax * 0.4 || s > (double)sqdmax * 0.86) return;
  if (s > (double)sqdmax * 0.73)
    ++c_circle;
  else
    ++c_square;
}
double calcRatio(int xl, int yl, int xr, int yr) {
  return double(sg[xr][yr] - sg[xl - 1][yr] - sg[xr][yl - 1] +
                sg[xl - 1][yl - 1]) /
         double(sc[xr][yr] - sc[xl - 1][yr] - sc[xr][yl - 1] +
                sc[xl - 1][yl - 1]);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j) {
      int t;
      scanf("%d", &t);
      g[i][j] = t;
      c[i][j] = 1;
      sg[i][j] = sg[i - 1][j] + sg[i][j - 1] - sg[i - 1][j - 1] + g[i][j];
      sc[i][j] = sc[i - 1][j] + sc[i][j - 1] - sc[i - 1][j - 1] + c[i][j];
    }
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j) {
      ng[i][j] |= calcRatio(i - 2, j - 2, i + 2, j + 2) > 0.9;
      ng[i][j] |= calcRatio(i, j, i + 4, j + 4) > 0.6;
      ng[i][j] |= calcRatio(i - 4, j - 4, i, j) > 0.6;
      ng[i][j] |= calcRatio(i - 4, j, i, j + 4) > 0.6;
      ng[i][j] |= calcRatio(i, j - 4, i + 4, j) > 0.6;
    }
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j) g[i][j] = ng[i][j];
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j)
      if (!v[i][j] && g[i][j]) solve(i, j);
  printf("%d %d\n", c_circle, c_square);
  return 0;
}
