#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, y;
  long long sum;
};
node c[100000];
bool cmp(node a, node b) { return a.sum < b.sum; }
int main() {
  long long n, m;
  cin >> n >> m;
  long long a[n];
  long long b[m];
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < m; i++) {
    cin >> b[i];
  }
  long long k = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      c[k].x = i;
      c[k].y = b[j];
      c[k++].sum = a[i] * b[j];
    }
  }
  sort(c, c + k, cmp);
  for (int i = k - 2; i >= 0; i--) {
    if (c[i].x != c[k - 1].x) {
      cout << c[i].sum;
      break;
    }
  }
  return 0;
}
