#include <bits/stdc++.h>
using namespace std;
long long jin, d[200010], h[200010], s[2][200010], c[30], mx[2][2][20][200010],
    v[2][3009], rst[30], S, MX[2], K[2];
int pt[2][20][200010];
int main() {
  int k, n, m, i, j, a, b, l, r, cnt[2], id[2];
  scanf("%d%d", &n, &m);
  for (i = 0; i < n; i++) scanf("%I64d", d + i);
  for (i = 0; i < n; i++) {
    scanf("%I64d", h + i);
    h[i] *= 2;
    h[n + i] = h[i];
  }
  s[0][0] = 0;
  for (i = 1; i < 2 * n; i++) s[0][i] = s[0][i - 1] + d[(i - 1) % n];
  S = s[0][2 * n - 1];
  for (i = 0; i < 2 * n; i++) s[0][i] += h[i % n];
  s[1][2 * n - 1] = 0;
  for (i = 2 * n - 2; i >= 0; i--) s[1][i] = s[1][i + 1] + d[i % n];
  for (i = 0; i < 2 * n; i++) s[1][i] += h[i % n];
  for (i = 0; i < 2 * n; i++) {
    for (j = 0; j < 2; j++) mx[j][0][0][i] = s[j][i], pt[j][0][i] = i;
  }
  rst[0] = 1;
  for (i = 1; i < 30; i++) rst[i] = rst[i - 1] * 2;
  for (k = 1; k < 20; k++) {
    for (i = 0; i + rst[k] <= n * 2; i++) {
      for (j = 0; j < 2; j++) {
        mx[j][0][k][i] =
            max(mx[j][0][k - 1][i], mx[j][0][k - 1][i + rst[k - 1]]);
        if (mx[j][0][k][i] == mx[j][0][k - 1][i])
          pt[j][k][i] = pt[j][k - 1][i];
        else
          pt[j][k][i] = pt[j][k - 1][i + rst[k - 1]];
        if (k == 1) {
          mx[j][1][k][i] = mx[j][0][k - 1][i] +
                           mx[j][0][k - 1][i + rst[k - 1]] - mx[j][0][k][i];
          continue;
        }
        c[0] = mx[j][0][k - 1][i];
        c[1] = mx[j][1][k - 1][i];
        c[2] = mx[j][0][k - 1][i + rst[k - 1]];
        c[3] = mx[j][1][k - 1][i + rst[k - 1]];
        sort(c, c + 4);
        mx[j][1][k][i] = c[2];
      }
    }
  }
  for (i = 0; i < m; i++) {
    scanf("%d%d", &a, &b);
    a--;
    b--;
    if (a <= b) {
      l = b + 1;
      r = n + a;
    } else {
      l = b + 1;
      r = a;
    }
    cnt[0] = cnt[1] = 0;
    int ppt = l;
    MX[0] = MX[1] = -1;
    for (k = 20; k >= 0; k--) {
      if (ppt == r) break;
      if (ppt + rst[k] > r) continue;
      for (j = 0; j < 2; j++) {
        v[j][cnt[j]++] = mx[j][0][k][ppt];
        v[j][cnt[j]++] = mx[j][1][k][ppt];
        if (MX[j] < mx[j][0][k][ppt]) {
          MX[j] = mx[j][0][k][ppt];
          id[j] = pt[j][k][ppt];
        }
      }
      ppt += rst[k];
    }
    sort(v[0], v[0] + cnt[0]);
    sort(v[1], v[1] + cnt[1]);
    reverse(v[0], v[0] + cnt[0]);
    reverse(v[1], v[1] + cnt[1]);
    if (id[0] != id[1])
      jin = v[0][0] + v[1][0];
    else {
      jin = max(v[0][0] + v[1][1], v[0][1] + v[1][0]);
    }
    printf("%I64d\n", jin - S);
  }
}
