#include <bits/stdc++.h>
using namespace std;
template <typename T>
bool chmax(T& a, const T& b) {
  return a < b ? (a = b, true) : false;
}
template <typename T>
bool chmin(T& a, const T& b) {
  return b < a ? (a = b, true) : false;
}
long long X, K, Q;
vector<long long> R, T, A;
const int INF = 1e9;
long long f(long long a, long long b, long long mx, long long mn) {
  return max(min(a + b, mx), mn);
}
int main() {
  scanf("%lld%lld", &X, &K);
  R.assign(K, 0ll);
  for (int i = int(0); i < int(K); i++) {
    scanf("%lld", &R[i]);
  }
  R.insert(R.begin(), 0ll);
  R.insert(R.end(), INF);
  K = R.size();
  scanf("%lld", &Q);
  T.assign(Q, 0ll);
  A.assign(Q, 0ll);
  for (int i = int(0); i < int(Q); i++) {
    scanf("%lld%lld", &T[i], &A[i]);
  }
  long long mx = X, mn = 0, sum = 0, idx = 1;
  for (int i = int(0); i < int(Q); i++) {
    while (idx < K && R[idx] <= T[i]) {
      if (idx % 2) {
        mx = min(mx - (R[idx] - R[idx - 1]), X);
        mn = max(mn - (R[idx] - R[idx - 1]), 0ll);
        sum -= R[idx] - R[idx - 1];
      } else {
        mx = min(mx + (R[idx] - R[idx - 1]), X);
        mn = max(mn + (R[idx] - R[idx - 1]), 0ll);
        sum += R[idx] - R[idx - 1];
      }
      idx++;
    }
    long long ans;
    if (idx % 2) {
      long long t = T[i] - R[idx - 1];
      long long p = max(min(mx - t, X), 0ll), q = min(max(mn - t, 0ll), X);
      ans = f(A[i], -t + sum, p, q);
    } else {
      long long t = T[i] - R[idx - 1];
      long long p = max(min(mx + t, X), 0ll), q = min(max(mn + t, 0ll), X);
      ans = f(A[i], t + sum, p, q);
    }
    printf("%lld\n", ans);
  }
  return 0;
}
