#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int maxn = 111111 * 2;
const int MAXN = 888888;
long long dd[maxn * 2];
long long h[maxn * 2];
long long dist(int x, int y) { return dd[y] - dd[x]; }
struct qq {
  long long s, tl, tr, d;
};
class Seg {
 public:
  long long *a;
  int n;
  long long s[MAXN], tl[MAXN], tr[MAXN];
  void modify(int o, int l, int r) {
    int m = l + (r - l) / 2;
    s[o] = max(max(s[2 * o], s[2 * o + 1]),
               tr[2 * o] + tl[2 * o + 1] + dist(m, m + 1));
    tr[o] = max(tr[2 * o + 1], tr[2 * o] + dist(m, r));
    tl[o] = max(tl[2 * o], tl[2 * o + 1] + dist(l, m + 1));
  }
  void Init(long long *_a, int _n) {
    n = _n;
    a = _a;
    init(1, 1, n);
  }
  void init(int o, int l, int r) {
    if (l == r) {
      s[o] = tl[o] = tr[o] = a[l];
      return;
    }
    int m = l + (r - l) / 2;
    init(2 * o, l, m);
    init(2 * o + 1, m + 1, r);
    modify(o, l, r);
  }
  qq get_sum(int o, int l, int r, int ql, int qr) {
    if (ql <= l && qr >= r) {
      return (qq){s[o], tl[o], tr[o], dist(l, r)};
    }
    int m = l + (r - l) / 2;
    if (qr <= m)
      return get_sum(2 * o, l, m, ql, qr);
    else if (ql > m)
      return get_sum(2 * o + 1, m + 1, r, ql, qr);
    else {
      qq q1 = get_sum(2 * o, l, m, ql, qr);
      qq q2 = get_sum(2 * o + 1, m + 1, r, ql, qr);
      qq ret;
      ret.s = max(max(q1.s, q2.s), q1.tr + q2.tl + dist(m, m + 1));
      ret.tr = max(q2.tr, q1.tr + dist(m, m + 1) + q2.d);
      ret.tl = max(q1.tl, q2.tl + dist(m, m + 1) + q1.d);
      ret.d = q1.d + q2.d + dist(m, m + 1);
      return ret;
    }
  }
} seq;
int n, m;
int main(int argc, char const *argv[]) {
  scanf("%d%d", &(n), &(m));
  for (int(i) = 0; i < (int)(n); ++(i)) cin >> dd[i + 2];
  for (int(i) = 0; i < (int)(n - 1); ++(i)) dd[n + 2 + i] = dd[i + 2];
  for (int i = 3; i <= 2 * n; ++i) dd[i] += dd[i - 1];
  for (int(i) = 0; i < (int)(n); ++(i)) {
    cin >> h[i + 1];
    h[i + 1] *= 2;
    h[i + 1 + n] = h[i + 1];
  }
  seq.Init(h, 2 * n);
  while (m--) {
    int a, b;
    scanf("%d%d", &(a), &(b));
    long long ans;
    if (a <= b) {
      ans = seq.get_sum(1, 1, 2 * n, b + 1, a + n - 1).s;
    } else {
      ans = seq.get_sum(1, 1, 2 * n, b + 1, a - 1).s;
    }
    cout << (ans) << endl;
  }
  return 0;
}
