#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <fstream>
#include <cstdlib>
#define rep( i, l, r ) for (int i = l; i <= r; i++)
#define down( i, l, r ) for (int i = l; i >= r; i--)
#define MS 2009
#define MAX 1073741823
using namespace std;
int num[MS][MS], n, m, l[MS][MS], r[MS][MS], h[MS][MS], ans1, ans2, a;
int main()
{
scanf("%d%d", &n, &m);
rep(i, 1, n) rep(j, 1, m) scanf("%d", &num[i][j]);
rep(j, 1, m) h[1][j] = 1;
rep(i, 1, n) { l[i][1] = 1; r[i][m] = 1; }
rep(i, 2, n) rep(j, 1, m) if (num[i][j] != num[i-1][j]) h[i][j] = h[i-1][j] + 1; else h[i][j] = 1;
rep(i, 1, n) rep(j, 2, m) if (num[i][j] != num[i][j-1]) l[i][j] = l[i][j-1] + 1; else l[i][j] = 1;
rep(i, 1, n) down(j, m-1, 1) if (num[i][j] != num[i][j+1]) r[i][j] = r[i][j+1] + 1; else r[i][j] = 1;
ans1 = ans2 = 1;
rep(i, 1, n) rep(j, 1, m)
{
if (h[i][j] == 1) ans2 = max(ans2, l[i][j]+r[i][j]-1); else
{
l[i][j] = min(l[i][j], l[i-1][j]);
r[i][j] = min(r[i][j], r[i-1][j]);
a = min(l[i][j]+r[i][j]-1, h[i][j]); ans1 = max(ans1, a);
ans2 = max(ans2, (l[i][j]+r[i][j]-1)*h[i][j]);
}
}
printf("%d\n%d\n", ans1*ans1, ans2);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGNzdGRsaWI+CgojZGVmaW5lIHJlcCggaSwgbCwgciApIGZvciAoaW50IGkgPSBsOyBpIDw9IHI7IGkrKykKI2RlZmluZSBkb3duKCBpLCBsLCByICkgZm9yIChpbnQgaSA9IGw7IGkgPj0gcjsgaS0tKQojZGVmaW5lIE1TIDIwMDkKI2RlZmluZSBNQVggMTA3Mzc0MTgyMwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBudW1bTVNdW01TXSwgbiwgbSwgbFtNU11bTVNdLCByW01TXVtNU10sIGhbTVNdW01TXSwgYW5zMSwgYW5zMiwgYTsKCmludCBtYWluKCkKewoJc2NhbmYoIiVkJWQiLCAmbiwgJm0pOwoJcmVwKGksIDEsIG4pIHJlcChqLCAxLCBtKSBzY2FuZigiJWQiLCAmbnVtW2ldW2pdKTsKCXJlcChqLCAxLCBtKSBoWzFdW2pdID0gMTsKCXJlcChpLCAxLCBuKSB7IGxbaV1bMV0gPSAxOyByW2ldW21dID0gMTsgfQoJcmVwKGksIDIsIG4pIHJlcChqLCAxLCBtKSBpZiAobnVtW2ldW2pdICE9IG51bVtpLTFdW2pdKSBoW2ldW2pdID0gaFtpLTFdW2pdICsgMTsgZWxzZSBoW2ldW2pdID0gMTsKCXJlcChpLCAxLCBuKSByZXAoaiwgMiwgbSkgaWYgKG51bVtpXVtqXSAhPSBudW1baV1bai0xXSkgbFtpXVtqXSA9IGxbaV1bai0xXSArIDE7IGVsc2UgbFtpXVtqXSA9IDE7CglyZXAoaSwgMSwgbikgZG93bihqLCBtLTEsIDEpIGlmIChudW1baV1bal0gIT0gbnVtW2ldW2orMV0pIHJbaV1bal0gPSByW2ldW2orMV0gKyAxOyBlbHNlIHJbaV1bal0gPSAxOwoJYW5zMSA9IGFuczIgPSAxOwoJcmVwKGksIDEsIG4pIHJlcChqLCAxLCBtKQoJewoJCWlmIChoW2ldW2pdID09IDEpIGFuczIgPSBtYXgoYW5zMiwgbFtpXVtqXStyW2ldW2pdLTEpOyBlbHNlCgkJewoJCQlsW2ldW2pdID0gbWluKGxbaV1bal0sIGxbaS0xXVtqXSk7IAoJCQlyW2ldW2pdID0gbWluKHJbaV1bal0sIHJbaS0xXVtqXSk7CgkJCWEgPSBtaW4obFtpXVtqXStyW2ldW2pdLTEsIGhbaV1bal0pOyBhbnMxID0gbWF4KGFuczEsIGEpOwoJCQlhbnMyID0gbWF4KGFuczIsIChsW2ldW2pdK3JbaV1bal0tMSkqaFtpXVtqXSk7CgkJfQoJfQoJcHJpbnRmKCIlZFxuJWRcbiIsIGFuczEqYW5zMSwgYW5zMik7CglyZXR1cm4gMDsKfQ==