#include <bits/stdc++.h>
using namespace std;
int matr[2000][2000];
bool used[2000][2000];
int n;
int main() {
  cin >> n;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) scanf("%d", &matr[i][j]);
  int circ = 0, sq = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (used[i][j]) continue;
      if (matr[i][j] == 0) {
        used[i][j] = true;
        continue;
      }
      if (matr[i][j] == 1) {
        bool issq = true;
        int st = 0;
        int k1 = j;
        while (k1 < n && matr[i][k1] == 1) {
          if (i > 0 && matr[i - 1][k1] == 1) {
            issq = false;
            break;
          }
          k1++;
        }
        int k2 = i;
        while (k2 < n && matr[k2][j] == 1) {
          if (j > 0 && matr[k2][j - 1] == 1) {
            issq = false;
            break;
          }
          k2++;
        }
        if (issq) {
          sq++;
          for (int i1 = i; i1 <= min(n - 1, k2); i1++)
            for (int j1 = j; j1 <= min(n - 1, k1); j1++)
              if (matr[i1][j1] == 1) used[i1][j1] = true;
        } else {
          vector<int> lft, rght;
          int tt = i;
          int kk = j;
          lft.push_back(kk);
          while (kk < n && matr[i][kk] == 1) {
            used[i][kk] = true;
            kk++;
          }
          if (matr[i][kk] == 0) kk--;
          rght.push_back(kk);
          int sz = 1;
          while (true) {
            int l = lft[sz - 1];
            int r = rght[sz - 1];
            tt++;
            while (l < n && matr[tt][l] == 0) l++;
            while (r > 0 && matr[tt][r] == 0) r--;
            while (l > 0 && matr[tt][l] == 1) l--;
            while (r < n && matr[tt][r] == 1) r++;
            for (int u = l; u <= r; u++)
              if (matr[tt][u] == 1) used[tt][u] = true;
            if (l <= r) {
              lft.push_back(l);
              rght.push_back(r);
              sz++;
            } else {
              int cnt = 0;
              int sz = lft.size();
              for (int v = 0; v <= sz / 2; v++) {
                int k = abs(lft[v] - lft[sz - v - 1]);
                if (k > 1) cnt++;
              }
              if (cnt > 1) {
                sq++;
                break;
              } else {
                int cnt = 0;
                for (int v = 1; v < sz; v++) {
                  int k = abs(lft[v - 1] + lft[v + 1] - 2 * lft[v]);
                  if (k > 2) cnt++;
                }
                if (cnt > 1) {
                  circ++;
                } else {
                  sq++;
                }
                break;
              }
            }
          }
        }
      }
    }
  }
  cout << circ << " " << sq << endl;
  return 0;
}
