#include <cstdio>
#include <queue>
using namespace std;
int visited[625]={0}, n, map[25][25]={0, },ans,cnt=0;
const int row[4]= {0, 0 , -1 ,1};
const int col[4]= {1, -1, 0 , 0};
queue <pair<int, int> > q;
void bfs(int r, int c)
{
cnt++;
q.push(pair<int, int> (r, c)); ans=0 ;
while(!q.empty())
{
int R= q.front().first;
int C= q.front().second;
q.pop();
for(int i=0 ; i <4; i++)
{
int nr= R+row[i];
int nc= C+col[i];
if(nr<0 || nr>=n || nc<0 || nc>=n) continue;
if(map[nr][nc]==1){
q.push(pair<int, int>(nr, nc)); map[nr][nc]=map[R][C]+1; ans++;
}
}
}
if(ans==0) ans=1;
visited[ans]++;
}
int main()
{
scanf("%d", &n);
for(int i= 0 ; i< n; i++)
for(int j = 0 ; j < n ; j ++) scanf("%d", &map[i][j]);
for(int i= 0 ; i< n; i++)
for(int j = 0 ; j < n ; j ++) if(map[i][j]==1) bfs(i, j);
printf("%d\n", cnt);
for(int i =0 ; i< n*n ; i++)
{
if(visited[i])
{
while(visited[i]--)
printf("%d\n", i);
}
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHF1ZXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgdmlzaXRlZFs2MjVdPXswfSwgbiwgbWFwWzI1XVsyNV09ezAsIH0sYW5zLGNudD0wOwpjb25zdCBpbnQgcm93WzRdPSB7MCwgMCAsIC0xICwxfTsKY29uc3QgaW50IGNvbFs0XT0gezEsIC0xLCAwICwgMH07CnF1ZXVlIDxwYWlyPGludCwgaW50PiA+IHE7CnZvaWQgYmZzKGludCByLCBpbnQgYykKewogIGNudCsrOwogIHEucHVzaChwYWlyPGludCwgaW50PiAociwgYykpOyBhbnM9MCAgOwogIHdoaWxlKCFxLmVtcHR5KCkpCiAgewogICAgaW50IFI9IHEuZnJvbnQoKS5maXJzdDsKICAgIGludCBDPSBxLmZyb250KCkuc2Vjb25kOwogICAgcS5wb3AoKTsKICAgIGZvcihpbnQgaT0wIDsgaSA8NDsgaSsrKQogICAgewogICAgICBpbnQgbnI9IFIrcm93W2ldOwogICAgICBpbnQgbmM9IEMrY29sW2ldOwogICAgICBpZihucjwwIHx8IG5yPj1uIHx8IG5jPDAgfHwgbmM+PW4pIGNvbnRpbnVlOwogICAgICBpZihtYXBbbnJdW25jXT09MSl7CiAgICAgICAgcS5wdXNoKHBhaXI8aW50LCBpbnQ+KG5yLCBuYykpOyBtYXBbbnJdW25jXT1tYXBbUl1bQ10rMTsgYW5zKys7CiAgICAgIH0KICAgIH0KICB9CiAgaWYoYW5zPT0wKSBhbnM9MTsKICB2aXNpdGVkW2Fuc10rKzsKfQppbnQgbWFpbigpCnsKIHNjYW5mKCIlZCIsICZuKTsKIGZvcihpbnQgaT0gMCA7IGk8IG47IGkrKykKICAgZm9yKGludCBqID0gMCA7IGogPCBuIDsgaiArKykgc2NhbmYoIiVkIiwgJm1hcFtpXVtqXSk7CiBmb3IoaW50IGk9IDAgOyBpPCBuOyBpKyspCiAgIGZvcihpbnQgaiA9IDAgOyBqIDwgbiA7IGogKyspIGlmKG1hcFtpXVtqXT09MSkgYmZzKGksIGopOwogIHByaW50ZigiJWRcbiIsIGNudCk7CmZvcihpbnQgaSA9MCA7IGk8IG4qbiA7IGkrKykKewogIGlmKHZpc2l0ZWRbaV0pCiAgewogICAgd2hpbGUodmlzaXRlZFtpXS0tKQogICAgICBwcmludGYoIiVkXG4iLCBpKTsKICB9Cn0KfQo=