#include <bits/stdc++.h>
using namespace std;
int n, m;
long long d[201000], h[201000];
long long R[201000], L[201000];
int stmin[4 * 201000], stmax[4 * 201000];
void bmin(int p, int l, int r) {
  if (l == r) {
    stmin[p] = l;
    return;
  }
  bmin(p * 2, l, (l + r) / 2);
  bmin(p * 2 + 1, (l + r) / 2 + 1, r);
  if (L[stmin[p * 2]] >= L[stmin[p * 2 + 1]])
    stmin[p] = stmin[p * 2];
  else
    stmin[p] = stmin[p * 2 + 1];
}
void bmax(int p, int l, int r) {
  if (l == r) {
    stmax[p] = l;
    return;
  }
  bmax(p * 2, l, (l + r) / 2);
  bmax(p * 2 + 1, (l + r) / 2 + 1, r);
  if (R[stmax[p * 2]] >= R[stmax[p * 2 + 1]])
    stmax[p] = stmax[p * 2];
  else
    stmax[p] = stmax[p * 2 + 1];
}
int qmin(int p, int i, int j, int l, int r) {
  if (r < i || l > j) return -1;
  if (l >= i && r <= j) return stmin[p];
  int p1 = qmin(p * 2, i, j, l, (l + r) / 2);
  int p2 = qmin(p * 2 + 1, i, j, (l + r) / 2 + 1, r);
  if (p1 == -1) return p2;
  if (p2 == -1) return p1;
  if (L[p1] >= L[p2])
    return p1;
  else
    return p2;
}
int qmax(int p, int i, int j, int l, int r) {
  if (r < i || l > j) return -1;
  if (l >= i && r <= j) return stmax[p];
  int p1 = qmax(p * 2, i, j, l, (l + r) / 2);
  int p2 = qmax(p * 2 + 1, i, j, (l + r) / 2 + 1, r);
  if (p1 == -1) return p2;
  if (p2 == -1) return p1;
  if (R[p1] >= R[p2])
    return p1;
  else
    return p2;
}
int main() {
  int x, y, maior, menor, maior2, menor2;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; ++i) {
    scanf("%lld", &d[i]);
    d[i + n] = d[i];
  }
  for (int i = 0; i < n; ++i) {
    scanf("%lld", &h[i]);
    h[i + n] = h[i];
  }
  L[0] = 2LL * h[0];
  R[0] = 2LL * h[0];
  for (int i = 1; i < 2 * n; ++i) {
    L[i] = L[i - 1] - 2LL * h[i - 1] + 2LL * h[i] - d[i - 1];
    R[i] = R[i - 1] - 2LL * h[i - 1] + 2LL * h[i] + d[i - 1];
  }
  bmin(1, 0, 2 * n - 1);
  bmax(1, 0, 2 * n - 1);
  while (m--) {
    scanf("%d %d", &x, &y);
    if (x <= y) {
      x += n - 2;
      swap(x, y);
    } else {
      swap(x, y);
      y -= 2;
    }
    menor = qmin(1, x, y, 0, 2 * n - 1);
    maior = qmax(1, x, y, 0, 2 * n - 1);
    if (maior == menor) {
      if (maior < y)
        maior2 = qmax(1, maior + 1, y, 0, 2 * n - 1);
      else
        maior2 = -1;
      if (menor > x)
        menor2 = qmin(1, x, menor - 1, 0, 2 * n - 1);
      else
        menor2 = -1;
      if (maior2 == -1) {
        menor = menor2;
      } else if (menor2 == -1) {
        maior = maior2;
      } else {
        if (L[menor] + R[maior2] > L[menor2] + R[maior])
          maior = maior2;
        else
          menor = menor2;
      }
    }
    printf("%lld\n", L[menor] + R[maior]);
  }
  return 0;
}
