#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
#include <cctype>

using namespace std;

const int MaxBuff = 1<<20;

namespace IO {
  char buffer[ MaxBuff ], *p = buffer + MaxBuff;
  
  inline char read_char() {
    if( p == buffer + MaxBuff ) {
      fread( buffer, 1, MaxBuff, stdin );
      p = buffer;
    }
    return *p++;
  }
  
  inline int read_int() {
    char c;
    while( !isdigit( c = read_char() ) );
    int ret = ( c-'0' );
    while( isdigit( c = read_char() ) ) ret = ret*10 + c-'0';
    return ret;
  }
};

typedef pair< int, int > par;
#define x first
#define y second

const int MaxN = 10002;

vector< int > v[ MaxN ];
int sz[ MaxN ], L[ MaxN ];
int l[ MaxN ], t[ MaxN ], w[ MaxN ];
par A[ MaxN ], B[ MaxN ];

int main( void ) {
  int n, c;
  scanf( "%d %d", &n, &c );
  for( int i = 0; i < n; ++i ) {
    int x;
    x = IO :: read_int(); --x;
    v[x].push_back( i );
    sz[x]++;
  }

  int m = IO :: read_int();
  for( int i = 0; i < m; ++i ) {
    int a = IO :: read_int();
    int b = IO :: read_int();
    --a, --b;
    A[i] = par( a, i );
    B[i] = par( b, i );
    l[i] = b-a+1;
  }

  sort( A, A+m );
  sort( B, B+m );

  for( int i = 0; i < c; ++i ) {
    int p = 0, d;
    for( int j = 0; j < m; ++j ) {
      while( v[i][p] < A[j].x && p < sz[i] ) p++;
      L[A[j].y] = p;
    }

    p = 0;
    for( int j = 0; j < m; ++j ) {
      while( v[i][p] <= B[j].x && p < sz[i] ) p++;
      d = p-L[B[j].y];
      if( d > t[B[j].y] ) t[B[j].y] = d, w[B[j].y] = i;
    }
  }

  for( int i = 0; i < m; ++i )
    if( t[i] > ( l[i]/2 ) ) printf( "da %d\n", w[i]+1 ); else
      puts( "ne" );
  return 0;
}
