#include <bits/stdc++.h>
using namespace std;
const int N = 405;
short r[N][N][N];
int cnt[N * N], a[N][N], n, m;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) scanf("%d", &a[i][j]);
  for (int i = 1; i <= n; i++)
    for (int j = 1, k = 1; j <= m; j++) {
      while (k <= m && !cnt[a[i][k]]) cnt[a[i][k]]++, k++;
      r[i][i][j] = k - 1;
      cnt[a[i][j]]--;
    }
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) {
      for (int k = 1, l = 1; k <= m; k++) {
        l = max(l, k);
        while (l <= m && !cnt[a[i][l]] && !cnt[a[j][l]] && a[i][l] != a[j][l])
          cnt[a[j][l]]++, cnt[a[i][l]]++, l++;
        r[i][j][k] = l - 1;
        if (l > k) cnt[a[i][k]]--, cnt[a[j][k]]--;
      }
    }
  for (int i = n; i; i--)
    for (int j = i + 1; j <= n; j++)
      for (int k = 1; k <= m; k++) r[i][j][k] = min(r[i][j][k], r[i + 1][j][k]);
  int ans = 0;
  for (int i = 1; i <= m; i++)
    for (int j = 1; j <= m; j++)
      for (int k = 1, l = 1; k <= n; k++) {
        l = max(l, k);
        while (l <= n && r[k][l][i] >= j) l++;
        ans = max(ans, (l - k) * (j - i + 1));
      }
  printf("%d\n", ans);
  return 0;
}
