#include <bits/stdc++.h>
using namespace std;
const int N=2e3+10;
const int M=N*N;
bool vis[N][N];
bool p[N][N];
int n;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
pair<int,int> ans[N];
int tail;
pair<int,int> q[M];
void dfs(int x,int y){
vis[x][y]=1,ans[tail].first++;
for(int i=0;i<4;i++){
int fx=x+dx[i],fy=y+dy[i];
if(fx<0||fy<0||fx>n+1||fy>n+1) continue;
if(vis[fx][fy]) continue;
if(p[fx][fy]==1) dfs(fx,fy);
else ans[tail].second++;
}
}
void bfs(int x,int y){
int front=1,qtail=1;
q[qtail]={x,y};
vis[x][y]=1;
while(front<=qtail){
auto t=q[front];
int gx=t.first,gy=t.second;
ans[tail].first++;
front++;
for(int i=0;i<4;i++){
int fx=gx+dx[i],fy=gy+dy[i];
if(fx<0||fy<0||fx>n+1||fy>n+1) continue;
if(vis[fx][fy]) continue;
if(p[fx][fy]==1) qtail++,q[qtail]={fx,fy},vis[fx][fy]=1;
else ans[tail].second++;
}
}
}
bool cmp(pair<int,int> A,pair<int,int> B){
if(A.first!=B.first) return A.first>B.first;
else return A.second<B.second;
}
int main(){
//freopen("a.in","r",stdin);
scanf("%d",&n);
for (int i = 1; i <= n; i++) {
string s;
cin>>s;
for (int j = 0; j < n; j++) {
if(s[j]=='#')
p[i][j+1]=1;
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(p[i][j]&&!vis[i][j])
tail++,dfs(i,j);
stable_sort(ans+1,ans+1+tail,cmp);
//for(int i=1;i<=tail;i++) printf("%d %d\n",ans[i].first,ans[i].second);
// for(int i=0;i<=n+1;i++){
// for(int j=0;j<=n+1;j++)printf("%3d",vis[i][j]);
// puts("");
// }
//cout<<tail<<" ";
printf("%d %d\n",ans[1].first,ans[1].second);
}
BFS 与 DFS 均WA on 10,输出500001 0