#include <bits/stdc++.h>
using namespace std;
bool debug = 1;
int n, m, k;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
long long ln, lk, lm;
int d[200105], h[200105];
long long sd[200105];
int M;
pair<long long, int> T[2][530000];
void update(int id, int l, long long v) {
  l += M;
  if (id == 0)
    T[id][l] = {v, -(l - M)};
  else
    T[id][l] = {v, l - M};
  while (l > 1) {
    T[id][l >> 1] = max(T[id][l], T[id][l ^ 1]);
    l >>= 1;
  }
}
pair<long long, int> qy(int id, int l, int r) {
  assert(l <= r);
  pair<long long, int> ans = {-(1LL << 60), 0};
  for (l = l + M - 1, r = r + M + 1; l ^ r ^ 1; l >>= 1, r >>= 1) {
    if (~l & 1) {
      if (T[id][l ^ 1] > ans) {
        ans = T[id][l ^ 1];
      }
    }
    if (r & 1 && T[id][r ^ 1] > ans) {
      ans = T[id][r ^ 1];
    }
  }
  return ans;
}
void init() {
  for (int(i) = 1; (i) <= (int)(n + n); (i)++) sd[i] = d[i] + sd[i - 1];
  for (M = 1; n + n + 2 > M; M <<= 1)
    ;
  for (int(i) = 1; (i) <= (int)(n + n); (i)++) {
    long long val = sd[i - 1] + h[i] * 2;
    update(1, i, val);
    val = h[i] * 2 - sd[i - 1];
    update(0, i, val);
  }
}
void cal(int x, int y) {
  assert(x + 1 <= y);
  vector<pair<long long, int>> ls, rs;
  ls.push_back(qy(0, x, y));
  rs.push_back(qy(1, x, y));
  if (-ls[0].second > x) {
    ls.push_back(qy(0, x, -ls[0].second - 1));
  }
  if (-ls[0].second < y) {
    ls.push_back(qy(0, -ls[0].second + 1, y));
  }
  if (rs[0].second > x) {
    rs.push_back(qy(1, x, rs[0].second - 1));
  }
  if (rs[0].second < y) {
    rs.push_back(qy(1, rs[0].second + 1, y));
  }
  long long ans = -(1LL << 60);
  for (int(i) = 0; (i) < (int)(ls.size()); (i)++)
    for (int(j) = 0; (j) < (int)(rs.size()); (j)++) {
      if (-ls[i].second < rs[j].second) {
        ans = max(ans, ls[i].first + rs[j].first);
      }
    }
  printf("%lld\n", ans);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int(i) = 1; (i) <= (int)(n); (i)++) {
    scanf("%d", d + i);
    d[i + n] = d[i];
  }
  for (int(i) = 1; (i) <= (int)(n); (i)++) {
    scanf("%d", h + i);
    h[i + n] = h[i];
  }
  init();
  for (int a, b, i = 0, x, y; i < m; i++) {
    scanf("%d%d", &a, &b);
    if (a <= b) {
      x = b + 1;
      y = a + n - 1;
    } else {
      x = b + 1;
      y = a - 1;
    }
    cal(x, y);
  }
  return 0;
}
