#include <bits/stdc++.h>
using namespace std;
int n, m;
int ans = INT_MIN;
void dp_cal(vector<int> a, vector<int> b){
vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
dp[i][j] = max(dp[i][j], dp[i - 1][i - 1] + a[i] * b[j]);
ans = max(dp[i][j], ans);
}
}
}
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
cin >> n >> m;
vector<int> a(n + 1);
vector<int> b(m + 1);
for(int i = 1; i <= n; i++){
cin >> a[i];
}
for(int i = 1; i <= m; i++){
cin >> b[i];
}
dp_cal(a, b);
reverse(a.begin() + 1, a.end());
dp_cal(a, b);
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBtOwppbnQgYW5zID0gSU5UX01JTjsKdm9pZCBkcF9jYWwodmVjdG9yPGludD4gYSwgdmVjdG9yPGludD4gYil7Cgl2ZWN0b3I8dmVjdG9yPGludD4+IGRwKG4gKyAxLCB2ZWN0b3I8aW50PihtICsgMSwgMCkpOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCWZvcihpbnQgaiA9IDE7IGogPD0gbTsgaisrKXsKCQkJZHBbaV1bal0gPSBtYXgoZHBbaV1bal0sIGRwW2kgLSAxXVtpIC0gMV0gKyBhW2ldICogYltqXSk7CgkJCWFucyA9IG1heChkcFtpXVtqXSwgYW5zKTsgCgkJfQoJfQp9CmludCBtYWluKCkgewoJY2luLnRpZSgwKTsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbiA+PiBuID4+IG07Cgl2ZWN0b3I8aW50PiBhKG4gKyAxKTsKCXZlY3RvcjxpbnQ+IGIobSArIDEpOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCWNpbiA+PiBhW2ldOwoJfQoJZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspewoJCWNpbiA+PiBiW2ldOwoJfQoJZHBfY2FsKGEsIGIpOwogCXJldmVyc2UoYS5iZWdpbigpICsgMSwgYS5lbmQoKSk7CglkcF9jYWwoYSwgYik7Cgljb3V0IDw8IGFuczsKCQp9