#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define ii pair<int, int>
#define fi first
#define se second
using namespace std;
const int maxn = 4e2;
const int max_ai = maxn * maxn;
int n, m, a[maxn + 10][maxn + 10], lst[maxn + 10][max_ai + 10], mx = 0, cnt[max_ai + 10];
int mx_1[maxn + 10][maxn + 10][maxn + 10], mx_2[maxn + 10][maxn + 10][maxn + 10];
bool check[maxn + 10][maxn + 10][maxn + 10];
vector<int> val;
vector<ii> pos[max_ai + 10];
ll ans = 0;
int get_id(int x)
{
return lower_bound(val.begin(), val.end(), x) - val.begin();
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("TABLE3.INP", "r"))
{
freopen("TABLE3.INP", "r", stdin);
freopen("TABLE3.OUT", "w", stdout);
}
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
cin >> a[i][j];
val.push_back(a[i][j]);
}
sort(val.begin(), val.end());
val.resize(unique(val.begin(), val.end()) - val.begin());
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
a[i][j] = get_id(a[i][j]);
for (int k = 1; k <= m; k++)
{
for (int i = 1; i <= n; i++)
{
for (int j = i; j >= 1; j--)
mx_1[k][i][j] = max(mx_1[k][i][j + 1], lst[j][a[i][k]]);
for (int j = i; j <= n; j++)
mx_2[k][i][j] = max(mx_2[k][i][j - 1], lst[j][a[i][k]]);
}
for (int i = 1; i <= n; i++)
lst[i][a[i][k]] = k;
}
for (int k = 1; k <= m; k++)
{
for (int j = 1; j <= n; j++)
for (int i = j + 1; i <= n; i++)
mx_1[k][i][j] = max(mx_1[k][i][j], mx_1[k][i - 1][j]);
for (int j = n; j >= 1; j--)
for (int i = j - 1; i >= 1; i--)
mx_2[k][i][j] = max(mx_2[k][i][j], mx_2[k][i + 1][j]);
}
for (int k = 1; k <= m; k++)
{
for (int i = 1; i <= n; i++)
{
check[k][i][i] = 1;
cnt[a[i][k]]++;
for (int j = i + 1; j <= n; j++)
{
cnt[a[j][k]]++;
check[k][i][j] = check[k][i][j - 1] && cnt[a[j][k]] == 1;
}
for (int j = i; j <= n; j++)
cnt[a[j][k]]--;
}
}
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
{
mx = 0;
for (int k = 1; k <= m; k++)
{
if (!check[k][i][j])
mx = k;
mx = max(mx, max(mx_1[k][j][i], mx_2[k][i][j]));
ans = max(ans, 1ll * (j - i + 1) * (k - mx));
}
}
cout << ans;
}