#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 1000;
const int LOGN = 20;
const long long lMAX = 1e18;
int n, m, h[N], d[N], two[50], pos[2][LOGN][N];
long long sum[N], st[2][LOGN][N];
long long max(const long long &a, const long long &b) { return a > b ? a : b; }
void swap(int &a, int &b) {
  a ^= b;
  b ^= a;
  a ^= b;
}
long long ask(int t, int l, int r, int &p) {
  int lgn = log2(r - l + 1);
  long long dl, dr;
  dl = st[t][lgn][l];
  dr = st[t][lgn][r - two[lgn] + 1];
  if (dl >= dr)
    p = pos[t][lgn][l];
  else
    p = pos[t][lgn][r - two[lgn] + 1], dl = dr;
  return dl;
}
int scan() {
  int i = 0;
  scanf("%d", &i);
  return i;
}
int main() {
  int i, j, a, b;
  n = scan();
  m = scan();
  for (two[0] = 1, i = 1; i <= 50; i++) two[i] = two[i - 1] * 2;
  for (i = 1; i <= n; i++) d[i] = d[n + i] = scan();
  for (i = 1; i <= n; i++) h[i] = h[n + i] = scan();
  for (i = 1; i <= n * 2; i++) {
    sum[i] = sum[i - 1] + d[i];
    st[0][0][i] = (long long)h[i] * 2 - sum[i - 1];
    pos[0][0][i] = i;
    st[1][0][i] = (long long)h[i] * 2 + sum[i - 1];
    pos[1][0][i] = i;
  }
  int lgn = log2(n * 2) + 1e-9;
  for (j = 1; j <= lgn; j++)
    for (i = 1; i + two[j - 1] <= n * 2; i++) {
      st[0][j][i] = max(st[0][j - 1][i], st[0][j - 1][i + two[j - 1]]);
      st[1][j][i] = max(st[1][j - 1][i], st[1][j - 1][i + two[j - 1]]);
      if (st[0][j][i] == st[0][j - 1][i])
        pos[0][j][i] = pos[0][j - 1][i];
      else
        pos[0][j][i] = pos[0][j - 1][i + two[j - 1]];
      if (st[1][j][i] == st[1][j - 1][i])
        pos[1][j][i] = pos[1][j - 1][i];
      else
        pos[1][j][i] = pos[1][j - 1][i + two[j - 1]];
    }
  for (i = 1; i <= m; i++) {
    a = scan();
    b = scan();
    if (a <= b)
      a = a + n - 1, b = b + 1;
    else
      a = a - 1, b = b + 1;
    swap(a, b);
    int l, r;
    long long dl, dr, ans = 0, tmp;
    dl = ask(0, a, b - 1, l);
    dr = ask(1, a + 1, b, r);
    if (l < r) {
      printf("%I64d\n", dl + dr);
      continue;
    }
    tmp = ask(1, l + 1, b, j);
    ans = max(ans, tmp + dl);
    tmp = ask(0, a, r - 1, j);
    ans = max(ans, tmp + dr);
    printf("%I64d\n", ans);
  }
  return 0;
}
