#include <cstdio>
#include <algorithm>
#include <cstring>

#include <set>

using namespace std;

const int MAXN = 300100;
const int MAXC = 10010;

int N, M, C, POC, KRAJ;
int zadnji[ MAXC ];
int niz[ MAXN ];

struct najvise {
	multiset< int > NIZ;
	najvise() {}
	void push( int br ) {
		NIZ.insert( br );		
	}
	pair< int, int > najveci() {
//		printf( "NAJVECI: " );
		set< int >::iterator it = NIZ.begin();
		int ret = 1, tren = 1, koji = *it, trazeni = *it;
//		printf( "%d ", *it );
		for( ++ it; it != NIZ.end(); ++ it ) {
	//		printf( "%d ", *it );
			if( *it == koji ) tren ++;
			else { 
				if( tren > ret ) { ret = tren; trazeni = koji; }
				tren = 1; koji = *it; 
			}
		}
		if( tren > ret ) { ret = tren; trazeni = koji; }
		
//		printf( "\n" );
		return make_pair( trazeni, ret );
	}
	void clear() {
		NIZ.clear();
	}	
} najv;

int main( void ) {
	memset( zadnji, -1, sizeof zadnji );
	
	scanf( "%d %d", &N, &C );
	for( int i = 0; i < N; ++ i ) {
		scanf( "%d", &niz[ i ] );
	}
	
	scanf( "%d", &M );
	for( int i = 0; i < M; ++ i ) {
		scanf( "%d %d", &POC, &KRAJ ); -- POC; -- KRAJ;
		
		najv.clear();
		for( int i = POC; i <= KRAJ; ++ i ) 
			najv.push( niz[ i ] );
			
		pair< int, int > sol = najv.najveci();
	//	printf( "%d %d\n", sol.first, sol.second );
		if( sol.second > ( KRAJ - POC + 1 ) / 2 ) printf( "da %d\n", sol.first );
		else printf( "ne\n" );
	}	
	
	return 0;	
}
