
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <math.h>
#include <map>
#include <set>
#include <queue>
#define int long long
using namespace std;
typedef pair<int, int> PII;
const int N = 1e6 + 10, mod = 998244353;
int n, m;
int a[N], b[N];
int as[N], bs[N];
int bgw[N], edw[N];
int sumA[N], sumB[N];
void solve()
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i], as[i] = as[i - 1] + a[i];
for(int i = 1; i <= n; i++) cin >> b[i], bs[i] = bs[i - 1] + b[i];
int bgmx = -1, bgid = -1;
int mxsumA = -1, mxsumid = - 1;
for(int i = 1; i <= n; i++)
{
if(i == 1) bgmx = b[i] - a[i], bgid = i, mxsumA = a[i] + b[i], mxsumid = i;
if(b[i] - a[i] > bgmx) bgmx = b[i] - a[i], bgid = i;
if(a[i] + b[i] > mxsumA) mxsumA = a[i] + b[i], mxsumid = i;
bgw[i] = bgid;
sumA[i] = mxsumid;
}
int edmx = -1, edid = -1;
int mxsumB = -1, mxsumBid = - 1;
for(int i = n; i >= 1; i --)
{
if(i == n) edmx = a[i] - b[i], edid = i, mxsumB = a[i] + b[i], mxsumBid = i;
if(a[i] - b[i] > edmx) edmx = a[i] - b[i], edid = i;
if(a[i] + b[i] > mxsumB) mxsumB = a[i] + b[i], mxsumBid = i;
edw[i] = edid;
sumB[i] = mxsumBid;
}
edw[n + 1] = 0; // 判断用
sumB[n + 1] = 0;
int ans = -1e18;
for(int j = 1; j <= n; j++)
{
ans = max(ans, as[j] + bs[n] - bs[j - 1]); // 不交换
if(j != 1 && j != n) // 选择两侧价值最高的交换
{
int t = as[j] + bs[n] - bs[j - 1];
t = t - a[bgw[j - 1]] + b[bgw[j - 1]];
t = t - b[edw[j + 1]] + a[edw[j + 1]];
ans = max(ans, t);
}
int h = a[j], k = b[j];
if(j != 1)
{
int id = sumA[j - 1];
int t = as[j] + b[id] + bs[n] - bs[j];
ans = max(ans, t);
}
if(j != n)
{
int id = sumB[j + 1];
int t = as[j - 1] + a[id] + (bs[n] - bs[j - 1]);
ans = max(ans, t);
}
}
cout << ans << endl;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int T = 1;
cin >> T;
while (T--)
{
solve();
}
return 0;
}