#include <bits/stdc++.h>
typedef struct {
  int A;
  int B;
  int up;
} SAND;
SAND s;
void initsand(int X, int a) {
  s.A = a;
  s.B = (X - a);
  s.up = 'A';
}
void dropsand(int *r, int t, int K) {
  int T = 0, L = 0, i;
  for (i = 0; i < K && t > 0; i++) {
    T = *(r + i) - L;
    L = *(r + i);
    while (T > 0 && t > 0) {
      if (s.up == 'A') {
        if (s.A > 0) {
          s.A--;
          s.B++;
        }
      } else {
        if (s.B > 0) {
          s.B--;
          s.A++;
        }
      }
      T--;
      t--;
    }
    if (s.up == 'A')
      s.up = 'B';
    else
      s.up = 'A';
  }
}
int main() {
  int X, K, *r, Q, i, *q, a, t;
  scanf("%d", &X);
  scanf("%d", &K);
  r = (int *)malloc(sizeof(int) * K);
  for (i = 0; i < K; i++) {
    scanf("%d", (r + i));
  }
  scanf("%d", &Q);
  q = (int *)malloc(sizeof(int) * Q);
  for (i = 0; i < Q; i++) {
    scanf("%d %d", &t, &a);
    initsand(X, a);
    dropsand(r, t, K);
    *(q + i) = s.A;
  }
  for (i = 0; i < Q; i++) {
    printf("%d\n", *(q + i));
  }
  return 0;
}
