#include <iostream>

using namespace std;

using li = long int;
using uli = unsigned long long int;

const li N = 1e5 + 10;

li chains[N];
li connections[N][2];
uli dp[N];

li read_data() {

    li n;
    cin >> n;

    for (li i = 0; i < 3; i++)
        for (li j = 0; j < n; j++) {
            if (i == 0)
                cin >> chains[j];
            else if (i == 1)
                cin >> connections[j][0];
            else
                cin >> connections[j][1];
        }

    return n;
}

void solve(li n) {

    uli prev_part = chains[n - 1];

    for (li i = n - 2; i >= 0; i--) {

        li lower_conn = min(connections[i + 1][0], connections[i + 1][1]);
        li upper_conn = max(connections[i + 1][0], connections[i + 1][1]);

        dp[i] = prev_part + (upper_conn - lower_conn + 1);
        prev_part = upper_conn == lower_conn ?
                    chains[i] :
                    max((uli) chains[i], prev_part + lower_conn + (chains[i] - upper_conn + 1));
    }

}

uli give_answer(li n) {

    uli ans = 0;

    for (li i = 0; i < n - 1; i++)
        ans = max(dp[i], ans);

    return ans;
}

int main() {

    li t;
    cin >> t;

    while (t--) {

        li n = read_data();
        solve(n);
        cout << give_answer(n) << endl;
    }

    return 0;
}

