#include <iostream>

using namespace std;

int main() {
	string ispis = "";
	
	int duzinaNiza, brojNizova;
	cin >> duzinaNiza;
	
	int niz[duzinaNiza];
	for (int i = 0; i < duzinaNiza; i++) {
		cin >> niz[i];
	}
	
	cin >> brojNizova;
	int nizPodnizova[brojNizova][2];
	
	int prvi, poslednji;
	for (int i = 0; i < brojNizova; i++){
		cin >> nizPodnizova[i][0];
		cin >> nizPodnizova[i][1];
	}

	bool neZnamKakoNazvatiOvuPromenljivu;	// Da li sam vec jednom prosao pored broja koji bi trebalo obrisati radi dobijanja neopadajuceg niza
	bool poslatoNe;	
	for (int i = 0; i < brojNizova; i++){
		if (nizPodnizova[i][0] == nizPodnizova[i][1]){
			ispis += "DA\n";
			continue;
		} else if (nizPodnizova[i][0] == -1) {
			ispis += "NE\n";
			continue;
		} else if (nizPodnizova[i][0] == -2) {
			ispis += "DA\n";
		}
		
		neZnamKakoNazvatiOvuPromenljivu = false;
		poslatoNe = false;
		
		for (int j = nizPodnizova[i][0]; j < nizPodnizova[i][1]; j++){
			if (niz[j] < niz[j-1]) {
				if (neZnamKakoNazvatiOvuPromenljivu) {
					ispis += "NE\n";
					poslatoNe = true;
					break;
				}
				neZnamKakoNazvatiOvuPromenljivu = true;
			}
		}
		
		if (poslatoNe) {
			for (int j = i; j < brojNizova; j++){
				if ((nizPodnizova[j][0] <= nizPodnizova[i][0]) && (nizPodnizova[j][1] >= nizPodnizova[i][1])){
					nizPodnizova[j][0] = -1;
				}
			}
		} else {
			ispis += "DA\n";
			for (int j = i; j < brojNizova; j++){
				if ((nizPodnizova[j][0] >= nizPodnizova[i][0]) && (nizPodnizova[j][1] <= nizPodnizova[i][1])){
					nizPodnizova[j][1] = -2;
				}
			}
		}
	}
	
	cout << ispis;
	return 0;
}