#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define sc second
#define pb push_back
#define pii pair<int,int>
#define pll pair<pll,pll>
#define MAXN 200007
ll a[MAXN],pos[MAXN],prefraste[MAXN],prefopada[MAXN],prefmin[MAXN],prefmax[MAXN];
bool lokmax[MAXN],lokmin[MAXN],raste[MAXN],opada[MAXN];
vector<ll> v[MAXN],vmax,vmin;
int main()
{
    ios::sync_with_stdio(false); cin.tie(0);
    ll n; cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    v[0].pb(0); a[0]=0;
    ll itr=0;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==a[i-1]) v[itr].pb(a[i]);
        else
        {
            itr++;
            v[itr].pb(a[i]);
        }
        pos[i]=itr;
    }
    itr++; v[itr].pb(LONG_MAX);
    pos[0]=0; pos[n+1]=itr;
    ll sum=0;
    for(int i=1;i<itr;i++)
    {
        if(v[i-1][0]<v[i][0] && v[i][0]<v[i+1][0]) raste[i]=true;
        else if(v[i-1][0]<v[i][0] && v[i][0]>v[i+1][0])
        {
            lokmax[i]=true;
            vmax.pb(sum+1);
        }
        else if(v[i-1][0]>v[i][0] && v[i][0]>v[i+1][0]) opada[i]=true;
        else
        {
            lokmin[i]=true;
            vmin.pb(sum+1);
        }
        sum+=v[i].size();
    }
    for(int i=1;i<itr;i++)
    {
        prefraste[i]=prefraste[i-1]+raste[i];
        prefopada[i]=prefopada[i-1]+opada[i];
        prefmax[i]=prefmax[i-1]+lokmax[i];
        prefmin[i]=prefmin[i-1]+lokmin[i];
    }
    ll q,l,r; cin>>q;
    for(int i=0;i<q;i++)
    {
        cin>>l>>r;
        ll rez=1;
        ll l1=pos[l],r1=pos[r];
        ll bropada=prefopada[r1]-prefopada[l1-1];
        ll brmax=prefmax[r1]-prefmax[l1-1];
        ll brmin=prefmin[r1]-prefmin[l1-1];
        if(lokmin[pos[l]]) brmin--;
        if(lokmax[pos[l]]) brmax--;
        if(opada[pos[l]]) bropada--;
        if(lokmin[pos[r]]) brmin--;
        if(lokmax[pos[r]]) brmax--;
        if(opada[pos[r]]) bropada--;
        if(0<v[pos[l]][0] && v[pos[l]][0]>v[pos[l]+1][0]) brmax++;
        else if(0>v[pos[l]][0] && v[pos[l]][0]>v[pos[l]+1][0]) bropada++;
        else if(0>v[pos[l]][0] && v[pos[l]][0]<v[pos[l]+1][0]) brmin++;
        if(v[pos[r]-1][0]<v[pos[r]][0] && v[pos[r]][0]>LLONG_MAX) brmax++;
        else if(v[pos[r]-1][0]>v[pos[r]][0] && v[pos[r]][0]>LLONG_MAX) bropada++;
        else if(v[pos[r]-1][0]>v[pos[r]][0] && v[pos[r]][0]<LLONG_MAX) brmin++;
        //cout<<bropada<<" "<<brmin<<" "<<brmax<<endl;
        if(bropada>0) rez=0;
        else if(brmin+brmax>=3) rez=0;
        else if(brmin+brmax==2)
        {
            auto pmin=lower_bound(vmin.begin(),vmin.end(),l);
            auto pmax=lower_bound(vmax.begin(),vmax.end(),r+1);
            ll posmin=vmin[pmin-vmin.begin()],posmax=vmax[pmax-vmax.begin()-1];
            //cout<<posmax<<" "<<posmin<<endl;
            if(posmax>l && posmin<r && (a[posmax-1]>a[posmax+1] || a[posmin-1]>a[posmin+1])) rez=0;
        }
        if(rez==1) cout<<"DA"<<endl;
        else cout<<"NE"<<endl;
    }
    return 0;
}