#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
// #define int long long
#define FOR(i, l, r) for(int i = (l); i <= (r); i++)
#define FOD(i, r, l) for(int i = (r); i >= (l); i--)
#define fi first
#define se second
const int maxn = 400+ 10;
const int mod = 1e9 + 7;
int n, m, ans = 0;
int a[maxn][maxn];
int tot;
int num[maxn * maxn];
short last[maxn * maxn][maxn];
short h[maxn][maxn];
int get(int x)
{
return lower_bound(num + 1, num + 1 + tot, x) - num;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n >> m;
FOR(i, 1, n) FOR(j, 1, m)
{
cin >> a[i][j];
num[++tot] = a[i][j];
}
sort(num + 1, num + 1 + tot);
tot = unique(num + 1, num + 1 + tot) - num - 1;
FOR(i, 1, n) FOR(j, 1, m) a[i][j] = get(a[i][j]);
FOR(i, 1, n)
{
FOR(j, 1, m)
{
h[j][j] = max(h[j][j], last[a[i][j]][j]);
last[a[i][j]][j] = i;
ans = max(ans, (i - h[j][j]));
}
FOD(l, m, 1)
{
FOR(r, l + 1, m)
{
h[l][r] = max(h[l][r], max(h[l + 1][r], max(h[l][r - 1], max(last[a[i][r]][l], last[a[i][l]][r]))));
ans = max(ans, (r - l + 1) * (i - h[l][r]));
}
}
}
cout << ans << "\n";
}
I3ByYWdtYSBHQ0MgdGFyZ2V0KCJhdngyIikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zIikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgRk9SKGksIGwsIHIpIGZvcihpbnQgaSA9IChsKTsgaSA8PSAocik7IGkrKykKI2RlZmluZSBGT0QoaSwgciwgbCkgZm9yKGludCBpID0gKHIpOyBpID49IChsKTsgaS0tKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCmNvbnN0IGludCBtYXhuID0gNDAwKyAxMDsKY29uc3QgaW50IG1vZCAgPSAxZTkgKyA3OwoKaW50IG4sIG0sIGFucyA9IDA7CmludCBhW21heG5dW21heG5dOwppbnQgdG90OwppbnQgbnVtW21heG4gKiBtYXhuXTsKc2hvcnQgbGFzdFttYXhuICogbWF4bl1bbWF4bl07CnNob3J0IGhbbWF4bl1bbWF4bl07CmludCBnZXQoaW50IHgpIAp7CiAgICByZXR1cm4gbG93ZXJfYm91bmQobnVtICsgMSwgbnVtICsgMSArIHRvdCwgeCkgLSBudW07Cn0KCnNpZ25lZCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgRk9SKGksIDEsIG4pIEZPUihqLCAxLCBtKSAKICAgIHsKICAgICAgICBjaW4gPj4gYVtpXVtqXTsKICAgICAgICBudW1bKyt0b3RdID0gYVtpXVtqXTsKICAgIH0KCiAgICBzb3J0KG51bSArIDEsIG51bSArIDEgKyB0b3QpOwogICAgdG90ID0gdW5pcXVlKG51bSArIDEsIG51bSArIDEgKyB0b3QpIC0gbnVtIC0gMTsKICAgIEZPUihpLCAxLCBuKSBGT1IoaiwgMSwgbSkgYVtpXVtqXSA9IGdldChhW2ldW2pdKTsKICAgIEZPUihpLCAxLCBuKSAKICAgIHsKICAgICAgICBGT1IoaiwgMSwgbSkgCiAgICAgICAgewogICAgICAgICAgICBoW2pdW2pdID0gbWF4KGhbal1bal0sIGxhc3RbYVtpXVtqXV1bal0pOwogICAgICAgICAgICBsYXN0W2FbaV1bal1dW2pdID0gaTsKICAgICAgICAgICAgYW5zID0gbWF4KGFucywgKGkgLSBoW2pdW2pdKSk7CiAgICAgICAgfQoKICAgICAgICBGT0QobCwgbSwgMSkKICAgICAgICB7CiAgICAgICAgICAgIEZPUihyLCBsICsgMSwgbSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaFtsXVtyXSA9IG1heChoW2xdW3JdLCBtYXgoaFtsICsgMV1bcl0sIG1heChoW2xdW3IgLSAxXSwgbWF4KGxhc3RbYVtpXVtyXV1bbF0sIGxhc3RbYVtpXVtsXV1bcl0pKSkpOwogICAgICAgICAgICAgICAgYW5zID0gbWF4KGFucywgKHIgLSBsICsgMSkgKiAoaSAtIGhbbF1bcl0pKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwp9