#include <bits/stdc++.h>
using namespace std;
#define N 1005
int n, m, ans = INT_MIN;
int A[N], B[N], dp[N][N];
void calculate() {
memset(dp, 0, sizeof(dp)); // 初始化 DP 陣列
// DP 計算兩個區間的總和
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
// 初始情況:取這一對的總和
dp[i][j] = A[i] + B[j];
if (i > 1 && j > 1) {
// 考慮延續前一個 DP 結果,更新最大總和
dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + A[i] + B[j]);
}
ans = max(ans, dp[i][j]);
}
}
}
int main() {
// 輸入陣列長度與數值
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", A + i);
}
for (int i = 1; i <= m; i++) {
scanf("%d", B + i);
}
// 計算不翻轉的情況
calculate();
// 翻轉 A 陣列並再次計算
for (int i = 1; i <= n / 2; i++) {
swap(A[i], A[n + 1 - i]);
}
calculate();
// 輸出最大總和
printf("%d\n", ans);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTiAxMDA1CgppbnQgbiwgbSwgYW5zID0gSU5UX01JTjsKaW50IEFbTl0sIEJbTl0sIGRwW05dW05dOwoKdm9pZCBjYWxjdWxhdGUoKSB7CiAgICBtZW1zZXQoZHAsIDAsIHNpemVvZihkcCkpOyAvLyDliJ3lp4vljJYgRFAg6Zmj5YiXCgogICAgLy8gRFAg6KiI566X5YWp5YCL5Y2A6ZaT55qE57i95ZKMCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgLy8g5Yid5aeL5oOF5rOB77ya5Y+W6YCZ5LiA5bCN55qE57i95ZKMCiAgICAgICAgICAgIGRwW2ldW2pdID0gQVtpXSArIEJbal07CiAgICAgICAgICAgIGlmIChpID4gMSAmJiBqID4gMSkgewogICAgICAgICAgICAgICAgLy8g6ICD5oWu5bu257qM5YmN5LiA5YCLIERQIOe1kOaenO+8jOabtOaWsOacgOWkp+e4veWSjAogICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoZHBbaV1bal0sIGRwW2kgLSAxXVtqIC0gMV0gKyBBW2ldICsgQltqXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYW5zID0gbWF4KGFucywgZHBbaV1bal0pOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICAvLyDovLjlhaXpmaPliJfplbfluqboiIfmlbjlgLwKICAgIHNjYW5mKCIlZCVkIiwgJm4sICZtKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsIEEgKyBpKTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsIEIgKyBpKTsKICAgIH0KCiAgICAvLyDoqIjnrpfkuI3nv7vovYnnmoTmg4Xms4EKICAgIGNhbGN1bGF0ZSgpOwoKICAgIC8vIOe/u+i9iSBBIOmZo+WIl+S4puWGjeasoeioiOeulwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbiAvIDI7IGkrKykgewogICAgICAgIHN3YXAoQVtpXSwgQVtuICsgMSAtIGldKTsKICAgIH0KICAgIGNhbGN1bGF0ZSgpOwoKICAgIC8vIOi8uOWHuuacgOWkp+e4veWSjAogICAgcHJpbnRmKCIlZFxuIiwgYW5zKTsKfQo=