#include <iostream>

using namespace std;
bool funkcija2(int a[],int l1,int r1){
    while(1l<r1){
    bool pom=true;
    if(a[l1]>a[l1+1] || a[r1]<a[r1-1]){
        if(pom==false)
            return pom;
        pom=false;
    }
      l1++;
      r1--;
    }
}
bool funkcija(int a[],int l,int r){
    if(l==r || r-1==l)
        return true;
    if(a[l]>a[r]){//ako je element na prvom mestu veci od onog na poslednjem mora da se obrise ili prvi ili poslednji pa ostatak niza mora da bude sortiran
    for(int i=l+1;i<r-1;i++){
        if(a[i]>a[i+1])
            return false;
    }
    return true;
    }
    else{
     return funkcija2(a,l,r);
    }
}
int main()
{
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++)
        cin>>a[i];
    int q;
    cin>>q;
    bool resenje[q];
    for(int ite=0;ite<q;ite++){
        int x,y;
        cin>>x>>y;
        resenje[ite]=funkcija(a,x-1,y-1);
    }
    for(int i=0;i<q;i++)
        if(resenje[i])
            cout<<"DA"<<endl;
    else
        cout<<"NE"<<endl;
    return 0;
}