#include <bits/stdc++.h>
#include <string>
#include <iterator>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <cmath>
#include <math.h>
using namespace std;
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vector<int> >
#define vld vector<long double>
#define vvld vector<vld>
#define vvb vector<vb>  
#define vl vector<long long>
#define vc vector<char> 
#define vvc vector<vector<char> > 
#define vvl vector<vl > 
#define vpi vector<pair<int,int> >
#define ll long long 
#define lf long float
#define sz(a) int(a.size())
#define forn(i,n) for(int i = 0 ; i < int(n) ; i++)
#define all(x) x.begin(),x.end()
#define vpl vector<pair<long long,long long> > 
#define F first
#define S second
#define mp make_pair
#define ld long double
#define pb push_back
#define pii pair<int,int>
#define pll pair<long long,long long>
#define pli pair<ll,int> 
#define pci pair<char,int>
#define vpii vector<pii> 
#define vpll vector<pll> 
#define vpli vector<pli>
// #define len(s) s.length()
#define un unsigned
# define M_PI           3.14159265358979323846  /* pi */
// #define mod 998244353ll
#define inf 1e18;
#define mod 1000000007ll
#define MAXN  10000001
#define fast() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
ll power(ll a,ll b){return b?power(a*a%mod,b/2)*(b%2?a:1)%mod:1;}
ll gcd(ll a,ll b){if(a==0 || b == 0) return max(a,b);if(a == 1 || b == 1)return 1;return gcd(max(a,b)%min(a,b),min(a,b));}
// -------------------------Sieve----------------------------------

/*
vl prime;
 
bool is_prime[1000005];
 
 
void sieve()
{
    for(int i = 1 ; i <= 1000000 ; i++)
    is_prime[i] = true;
    for(ll i = 2 ; i <= 1000000 ; i++)
    {
        if(is_prime[i])
        {
            for(ll j = i*i ; j <= 1000000 ; j += i)
            {
                is_prime[j] = false;
            }
        }
    }
    for(int i = 2 ; i <= 1000000 ; i++)
    {
        if(is_prime[i])
        {
            prime.pb(i);    
        }
    }
}
 
*/

// --------------------------------------------------

//  -----------------------line segment comperator------------------------
/*

bool comp(pair<ll,char> a,pair<ll,char> b)
{
    if(a.F < b.F)
    return true;
    if(a.F > b.F)
    return false;
    if(a.S == '-')
    return true;
    return false;
}

*/
// --------------------------------------------------------------------------


// -------------------------------DSU---------------------------------------
/*
////////////////------------------DSU-------------------------///////////////
int parent[200005];
int ssize[200005];

int find_set(int v)
{
    if (v == parent[v])
        return v;
    return parent[v] = find_set(parent[v]);
}



void make_set(int v) {
    parent[v] = v;
    ssize[v] = 1;
}

void union_sets(int a, int b) {
    a = find_set(a);
    b = find_set(b);
    if (a != b) {
        if (ssize[a] < ssize[b])
            swap(a, b);
        parent[b] = a;
        ssize[a] += ssize[b];
    }
}
*/
// ----------------------------------------------------------------------------





void solve()
{
    int n;
    cin>>n;
    vl c(n,0);
    vl a(n,0);
    vl b(n,0);
    forn(i,n)
    cin>>c[i];
    forn(i,n)
    cin>>a[i];
    forn(i,n)
    cin>>b[i];
    vl start(n,-1);
    vl end(n,-1);
    vl inter(n,-1);
    for(int i = 0 ; i < n-1 ; i++)
    {
        end[i] = max(a[i+1],b[i+1]) - min(a[i+1],b[i+1]);
    }
    for(int i = 1 ; i < n-1 ; i++)
    {
        if(a[i+1] == b[i+1])
        inter[i] = -1;
        else
        inter[i] = max(inter[i-1],end[i-1]) + 2 + min(a[i+1],b[i+1]) - 1 + c[i] - max(a[i+1],b[i+1]);
    } 
    for(int i = 1 ; i < n ; i++)
    {
        start[i] = c[i]-1 + 2 + max(inter[i-1],end[i-1]);
    }
    cout<<*max_element(all(start))<<endl;
}   



int main()    
{
    fast();
    // sieve();
    int te = 1;
    // setup();
    cin>>te;
    while(te--)
    {
        // t.clear();
        solve();
    }
    return 0;
}