#include <iostream>
#include <cstdio>
// #include <math>
using namespace std;
const int MAXN = 1001;
int a,b;
int as[MAXN], bs[MAXN];
int score[MAXN][MAXN] = {};
int solve(int i, int j) {
if (score[i][j] > 0) {
return score[i][j];
}
if (i >= a && j >= b) return 0;
int m1=-1, m2=-1;
if (i < a) {
m1 = solve(i + 1, j);
}
if (j < b) {
m2 = solve(i, j+1);
}
int ret;
if ((i+j) % 2 == 0) { // Player A
ret = m1 != -1 ? max(m1 + as[i], m2 + bs[j]) : m2 + bs[j];
} else { // Player B
ret = m1 == -1 ? m2 : (m2 == -1? m1 : min(m1, m2));
}
// printf("%d, %d => %d,%d => %d\n", i, j, m1, m2, ret);
return ret;
}
int main(int argc, char *argv[])
{
// cin >> a >> b;
scanf("%d %d", &a, &b);
for (int i = 0; i < a; ++i) {
scanf("%d", &as[i]);
}
for (int i = 0; i < b; ++i) {
scanf("%d", &bs[i]);
}
int s = solve(0, 0);
printf("%d\n", s);
return 0;
}