#include <bits/stdc++.h>
using namespace std;
const int maxn = 400;
const int maxval = 1e6;
int a[maxn+5][maxn+5], m, n, pos[maxn*maxn+5][maxn+5], dp[maxn+5][maxn+5];
vector <pair<int, int>> v[maxval+5];
void read() {
cin >> m >> n;
for (int i = 1; i<=m; ++i) {
for (int j = 1; j<=n; ++j) {
cin >> a[i][j];
v[a[i][j]].push_back({i, j});
}
}
}
void solve() {
int cnt = 0;
for (int i = 1; i<=maxval; ++i) {
if (!v[i].empty()) {
for (auto p : v[i]) {
a[p.first][p.second] = cnt;
}
++cnt;
}
}
int ans = 0;
for (int k = 1; k<=m; ++k) {
for (int i = n; i>=1; --i) {
for (int j = i; j<=n; ++j) {
dp[i][j] = max({dp[i][j], dp[i+1][j], dp[i][j-1], pos[a[k][i]][i], pos[a[k][j]][j]});
if (i < j) {
dp[i][j] = max({dp[i][j], pos[a[k][i]][j], pos[a[k][j]][i]});
if (a[k][i] == a[k][j]) dp[i][j] = k;
}
ans = max(ans, (j-i+1) * (k - dp[i][j]));
}
}
for (int i = 1; i<=n; ++i) {
pos[a[k][i]][i] = k;
}
}
cout << ans;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
read();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtYXhuID0gNDAwOwpjb25zdCBpbnQgbWF4dmFsID0gMWU2OwppbnQgYVttYXhuKzVdW21heG4rNV0sIG0sIG4sIHBvc1ttYXhuKm1heG4rNV1bbWF4bis1XSwgZHBbbWF4bis1XVttYXhuKzVdOwp2ZWN0b3IgPHBhaXI8aW50LCBpbnQ+PiB2W21heHZhbCs1XTsKdm9pZCByZWFkKCkgewogICAgY2luID4+IG0gPj4gbjsKICAgIGZvciAoaW50IGkgPSAxOyBpPD1tOyArK2kpIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgajw9bjsgKytqKSB7CiAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwogICAgICAgICAgICB2W2FbaV1bal1dLnB1c2hfYmFjayh7aSwgan0pOwogICAgICAgIH0KICAgIH0KfQp2b2lkIHNvbHZlKCkgewogICAgaW50IGNudCA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaTw9bWF4dmFsOyArK2kpIHsKICAgICAgICBpZiAoIXZbaV0uZW1wdHkoKSkgewogICAgICAgICAgICBmb3IgKGF1dG8gcCA6IHZbaV0pIHsKICAgICAgICAgICAgICAgIGFbcC5maXJzdF1bcC5zZWNvbmRdID0gY250OwogICAgICAgICAgICB9CiAgICAgICAgICAgICsrY250OwogICAgICAgIH0KICAgIH0KICAgIGludCBhbnMgPSAwOwogICAgZm9yIChpbnQgayA9IDE7IGs8PW07ICsraykgewogICAgICAgIGZvciAoaW50IGkgPSBuOyBpPj0xOyAtLWkpIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGk7IGo8PW47ICsraikgewogICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoe2RwW2ldW2pdLCBkcFtpKzFdW2pdLCBkcFtpXVtqLTFdLCBwb3NbYVtrXVtpXV1baV0sIHBvc1thW2tdW2pdXVtqXX0pOwogICAgICAgICAgICAgICAgaWYgKGkgPCBqKSB7CiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoe2RwW2ldW2pdLCBwb3NbYVtrXVtpXV1bal0sIHBvc1thW2tdW2pdXVtpXX0pOwogICAgICAgICAgICAgICAgICAgIGlmIChhW2tdW2ldID09IGFba11bal0pIGRwW2ldW2pdID0gazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFucyA9IG1heChhbnMsIChqLWkrMSkgKiAoayAtIGRwW2ldW2pdKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGk8PW47ICsraSkgewogICAgICAgICAgICBwb3NbYVtrXVtpXV1baV0gPSBrOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgYW5zOwp9CmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIHJlYWQoKTsKICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=