#include <bits/stdc++.h>
#include <iomanip>

#define ll long long
#define ld long double

/*
ll gcd(ll a, ll b) { if(b==0) return a; return gcd(b,a%b); }
ll lcm(ll a, ll b) { return a/gcd(a,b)*b; }
*/

using namespace std;

void da() { cout << "DA\n"; }
void ne() { cout << "NE\n"; }

bool moze(vector<int>& a, int l, int r) {
    int cnt=0;
    for(int i=l+1;i<=r;i++) {
        if(a[i-1]>a[i]) cnt++;
        if(cnt>1) return false;
    }

    return true;
}

const int maxN = 200007;
int cnt[maxN]={0}, cnt1[maxN]={0}, cnt2[maxN]={0};

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n, q, l, r;
    cin>>n;

    vector<int> a(n);
    bool tc=true;
    for(int i=0;i<n;i++) { cin>>a[i]; if(a[i]!=1 && a[i]!=2) tc=false; }

    // tc znaci da su primeri samo sa 1 i 2
    if(tc) {
        int br1=0, br2=0;
        for(int i=0;i<n;i++) {
            if(a[i]==1) br1++;
            else br2++;

            cnt1[i] = br1;
            cnt2[i] = br2;
        }
    } else {
        int br=0;
        cnt[0] = 0;
        for(int i=1;i<n;i++) {
            if(a[i] < a[i-1]) br++;
            cnt[i] = br;
        }
    }

    cin>>q;
    while(q--) {
        cin>>l>>r;

        if(tc) {
            if(a[l-1] == 1) {
                if(cnt2[r-1]-cnt2[l-1] > 1) ne();
                else da();
            } else {
                if(cnt1[r-1]-cnt1[l-1] > 1) ne();
                else da();
            }
        } else {
            if(cnt[r-1]-cnt[l-1] > 1) ne();
            else da();
        }
    }

    return 0;
}