#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2020;
double A[MAXN][MAXN];
double tmp[MAXN][MAXN];
int N;
inline double val1(int a, int b) { return A[a][b]; }
inline double val2(int a, int b) { return a && a <= N && b && b <= N; }
int bcnt;
double sumX, sumY;
double mxdis, mndis;
bool g[MAXN][MAXN];
bool vis[MAXN][MAXN];
void dfs(int x, int y) {
  if (!x || !y || x > N || y > N) return;
  if (!g[x][y]) return;
  if (vis[x][y]) return;
  vis[x][y] = true;
  bcnt++;
  sumX += x, sumY += y;
  dfs(x + 1, y);
  dfs(x, y + 1);
  dfs(x - 1, y);
  dfs(x, y - 1);
}
void dfsErase(int x, int y) {
  if (!x || !y || x > N || y > N) return;
  if (!g[x][y]) return;
  g[x][y] = false;
  dfsErase(x + 1, y);
  dfsErase(x, y + 1);
  dfsErase(x - 1, y);
  dfsErase(x, y - 1);
}
bool vis2[MAXN][MAXN];
inline double pw2(double a) { return a * a; }
void caltDis(int x, int y) {
  if (!x || !y || x > N || y > N) {
    mndis = min(pw2(sumX - x) + pw2(sumY - y), mndis);
    return;
  }
  if (vis2[x][y]) return;
  if (!g[x][y]) {
    mndis = min(pw2(sumX - x) + pw2(sumY - y), mndis);
    return;
  }
  vis2[x][y] = true;
  mxdis = max(pw2(sumX - x) + pw2(sumY - y), mxdis);
  caltDis(x + 1, y);
  caltDis(x, y + 1);
  caltDis(x - 1, y);
  caltDis(x, y - 1);
}
int main() {
  scanf("%d", &N);
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++) scanf("%lf", &A[i][j]);
  for (int x = 0; x < 6; x++) {
    for (int i = 1; i <= N; i++)
      for (int j = 1; j <= N; j++) {
        tmp[i][j] = (val1(i - 1, j - 1) + val1(i - 1, j) + val1(i - 1, j + 1) +
                     val1(i, j - 1) + val1(i, j) + val1(i, j + 1) +
                     val1(i + 1, j - 1) + val1(i + 1, j) + val1(i + 1, j + 1)) /
                    (val2(i - 1, j - 1) + val2(i - 1, j) + val2(i - 1, j + 1) +
                     val2(i, j - 1) + val2(i, j) + val2(i, j + 1) +
                     val2(i + 1, j - 1) + val2(i + 1, j) + val2(i + 1, j + 1));
      }
    memcpy(A, tmp, sizeof tmp);
  }
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++) g[i][j] = A[i][j] > 0.4;
  int cntR = 0, cntC = 0;
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++)
      if (!vis[i][j]) {
        sumX = 0, sumY = 0;
        bcnt = 0;
        dfs(i, j);
        if (bcnt <= 75) {
          dfsErase(i, j);
          continue;
        }
        sumX /= bcnt, sumY /= bcnt;
        mxdis = 0, mndis = 1e8;
        caltDis(i, j);
        mxdis = sqrt(mxdis), mndis = sqrt(mndis);
        if (fabs((mxdis / mndis) - 1.414) <= 0.2)
          cntR++;
        else
          cntC++;
      }
  cout << cntC << ' ' << cntR;
}
