<?php
  function is_edge($n, $p) {
    $c = get_column($n, $p);
    $r = get_row($n, $p);
  	if($c === 1||$c === $n) {
      return true;
    } else if($r === 1||$r === $n) {
      return true;
    }
    return false;
  }
  function get_column($n, $p) {
    if(($p % $n) === 0) {
      return $n;
    }
    return ($p % $n);
  }
  function get_row($n, $p) {
    return (int) ceil($p / $n);
  }

  $record = [];
  function exit_maze($n, $p) {
    if(is_edge($n, $p)) {
      $record[$p] = false;
      return true;
    }
    
    
    return false;
  }
fscanf(STDIN, "%d", $n);
$p = explode(' ', fgets(STDIN));

$count=0;
$ct=0;
for($i = 0;$i<($n*$n);$i++) {
  $ct++;
  if(!exit_maze($n, (int) $p[$i])) {
//echo get_row($n, (int) $p[$i])."gyo";
//echo get_column($n, (int) $p[$i])."rets";
  //  echo $p[$i].PHP_EOL;
    $count++;
  }
}
echo $count." ".$ct;
//var_dump(is_edge($n, (int) $p[$i]));
//echo get_row($n, (int) $p[$i])."gyo";
//echo get_column($n, (int) $p[$i])."rets";