#include <bits/stdc++.h>

using namespace std;

void solve() {
    int n;
    cin >> n;
    map<int, pair<int, bool>> a; // bool = 0
    // => broj na tom indeksu je negativan
    // bool = 1
    // => broj na tom indeksu je nenegativan.
    bool aone = 1;
    int ar[n+13];
    for (int i = 1; i <= n; ++i) {
        int u;
        cin >> u;
        ar[i] = u;
        a[abs(u)] = {i, u>=0};
        if (abs(u) != 1) {
            aone = 0;
        }
    }
    if (aone) {
        int cnt1 = 0, cnt2 = 0;
        for (int i = 1; i <= n; ++i) {
            cnt1 += (ar[i] == 1);
        }
        for (int i = 0; i < n; ++i) {
            int x;
            cin >> x;
            cnt2 += (x == 1);
        }
        cout << (cnt2%2 == cnt1%2 ? "DA" : "NE") << '\n';
        return;
    }
    bool ok = 1;
    for (int i = 1; i <= n; ++i) {
        int u;
        cin >> u;
        if (!ok)    continue;
        if (u == 0) {
            continue;
        }
        if (a[abs(u)].first == 0) {
            ok = 0;
        }
        else if (abs(a[abs(u)].first - i) % 2 != a[abs(u)].second && u != 0) {
            ok = 0;
        }
    }
    cout << (ok ?  "DA" : "NE") << '\n';
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t;
    cin >> t;
    while(t--) {
        solve();
    }
    return 0;
}
// korisno je da uocimo podzadatak gde se znak ne menja
// i elementi u oba niza su isti, samo na potencijalno
// razlicitim indeksima.
// Ispostavlja se da ovaj zadatak uvek ima resenje?