#include<bits/stdc++.h>
#define ll long long int
using namespace std;
const int N=1e6+7;
int a[2500][2500];
int l[2500][2500],r[2500][2500],u[2500][2500];
int lm[2500][2500],rm[2500][2500];
int main()
{
int n,m,ans1=0,ans2=0;
cin>>n>>m;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
cin>>a[i][j];
l[i][j]=1,r[i][j]=1;
u[i][j]=1;
lm[i][j]=1,rm[i][j]=1;
}
}
for (int i=1;i<=n;i++){
for (int j=2;j<=m;j++){
if (a[i][j-1]!=a[i][j]){
l[i][j]=l[i][j-1]+1;
lm[i][j]=l[i][j];
}
}
}
for (int i=1;i<=n;i++){
for (int j=m-1;j>=1;j--){
if (a[i][j]!=a[i][j+1]){
r[i][j]=r[i][j+1]+1;
rm[i][j]=r[i][j];
}
}
}
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
if (i!=1 && a[i][j]!=a[i-1][j]){
lm[i][j]=min(lm[i-1][j],l[i][j]);
rm[i][j]=min(rm[i-1][j],r[i][j]);
u[i][j]=u[i-1][j]+1;
}
int k1=rm[i][j]-lm[i][j]+1;
int k2=min(k1,u[i][j]);
ans1=max(ans1,k2*k2);
ans2=max(ans2,k1*u[i][j]);
}
}
cout<<ans1<<endl;
cout<<ans2<<endl;
return 0;
}