#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 1000001
#define OFFSET 50
#define Bit(i) (1LL << i )
#define INF (1ll<<30)
#define NAME "file"
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;

ll n, m, q, h, w ;
ll a[MAXN], x[MAXN ], e[MAXN ], s[MAXN ] ;
bool dp[1001][1001][101  ] ;
pair<ll,ll> limit[MAXN ] ;

void init() {
    cin >> n >> h >> w ;
    FOR(i, 1, w ) cin >> x[i] ;
    FOR(i, 1, w ) cin >> s[i] ;
    FOR(i, 1, w ) cin >> e[i] ;
    FOR(i , 0 , n ) {
    limit[i] = {0 , h - 1 } ;
    }
    FOR(i, 1, w ) {
        limit[x[i]] = {s[i], e[i] } ;
    }
}

void solve() {
    FOR(i, 0, n ) FOR(j, 0, h ) FOR(f, 0, 100 ) dp[i][j][f] = 0 ;
    dp[0][h / 2 ][ 0 + OFFSET ] = true ;
    FOR(i, 0, n - 2 ) {
        FOR(j, 0, h ) FOR (v, -OFFSET, OFFSET ) {
            if(dp[i][j][v + OFFSET ] == 0 ) continue ;
            FOR(dir, -1, 1 ) {
                ll cur_v = v  + dir ;
                if(cur_v < -OFFSET || cur_v > OFFSET ) continue ;
                ll nxt_h = j + cur_v ;
                if (nxt_h >= 0 && nxt_h < h && limit[i + 1].fi <= nxt_h && nxt_h <= limit[i + 1].se ) dp[i + 1][nxt_h][cur_v + OFFSET] = true;

            }
        }
    }

    ll ok = false ;
    FOR(j, 0, h ) FOR(g, 0, 100 ) if(dp[n - 1 ][j][g] ) ok = true ;
    cout << (ok ? "YES" : "NO") << el ;
}

_ROOT_ {
    // freopen(NAME".inp" , "r" , stdin);
    // freopen(NAME".out" , "w", stdout) ;
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
    cin >> t ;
    while(t--) {
        init();
        solve();
    }
    return (0&0);
}