/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
#include<stdio.h>
int map[105][105]= {};
int max=0, min=999;
void f(int x, int y, int k)
{
if(map[x+1][y]>k)
{
f(x+1,y,k);
}
if(map[x-1][y]>k)
{
f(x-1,y,k);
}
if(map[x][y+1]>k)
{
f(x,y+1,k);
}
if(map[x][y-1]>k)
{
f(x,y-1,k);
}
}
int main()
{
int n,i,j,temp=0, count[10000] = {},k;
scanf("%d",&n);
for(i=0; i<=n+1; i++)
{
for(j=0; j<=n+1; j++)
{
scanf("%d",&map[i][j]);
if(i==0 || j==0 || i==n+1 || j==n+1)
{
map[i][j] = 9999;
}
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf("%d",&map[i][j]);
if(map[i][j] > max)
{
max = map[i][j];
}
if(map[i][j] < min)
{
min = map[i][j];
}
}
}
for(k=min; k<=max; k++)
{
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(map[i][j] > k)
{
f(i, j, k);
count[k]++;
}
}
}
}
for(i=1; i<=k-1; i++)
{
for(j=1; j<=k-i-1; j++)
{
if(count[j]>count[j+1])
{
temp=count[j];
count[j]=count[j+1];
count[j+1]=temp;
}
}
}
for(i=1; i<=k-1; i++)
{
printf("%d",&count[k-1]);
}
return 0;
}