int memo[1000001][2];

int rec(int N, int *a, int *b, int i, int p) {
	if (i >= N) {
		return 0;
	}
	if (memo[i][p] != 0) {
		return memo[i][p];
	}

	int prendo = 0;
	if (!p) {
		prendo = rec(N, a, b, i + 1, 1) + ((a[i] > b[i]) ? a[i] : b[i]);
	} else {
		prendo = rec(N, a, b, i + 1, 1) + a[i];
	}
	int nprendo = rec(N, a, b, i + 1, 0);

	if (prendo > nprendo) {
		memo[i][p] = prendo;
		return prendo;
	}

	memo[i][p] = nprendo;
	return nprendo;
}

int tempo_massimo(int N, int a[], int b[]) { return rec(N, a, b, 0, 0); }
