#include<bits/stdc++.h>
using namespace std;
const int fx[4]={1,0,-1,0};
const int fy[4]={0,1,0,-1};
int n;
bool vis[1001][1001];
char a[1001][1001];
int c,s,ss;
int maxs=-99999,maxc=-99999;
int S(int x,int y){//算每一个点周长
int ss=0;
for(int i=0;i<4;i++){
int tx=x+fx[i];
int ty=y+fy[i];
if(a[tx][ty]=='.')ss++;
}
return ss;
}
void dfs(int x,int y){
vis[x][y]=c;
for(int i=0;i<4;i++){
int tx=x+fx[i];
int ty=y+fy[i];
if(!vis[tx][ty] && tx>=1 && ty>=1 && tx<=n && ty<=n && a[tx][ty]=='#'){
c++;//面积
s+=S(tx,ty);
dfs(tx,ty);
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>a[i][j];
for (int i = 0; i <= n + 1; i++){
a[0][i] = '.';
a[n + 1][i] = '.';
a[i][0] = '.';
a[i][n + 1] = '.';
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]=='#'){
c=1;
s=S(i,j);
dfs(i,j);
if(maxs < s) maxs = s, maxc = c;
if(maxs == s)
if (maxc > c) maxc = c;
}
}
}
cout<<maxs<<' '<<maxc;
return 0;
}