#include <bits/stdc++.h>
using namespace std;
inline int qpow(int b, int e, int m = 998244353) {
  int a = 1;
  for (; e; e >>= 1, b = (long long)b * b % m)
    if (e & 1) a = (long long)a * b % m;
  return a;
}
struct node {
  long long sum;
  long long pre;
  long long suf;
  long long ans;
};
node segt[1000000];
node combine(node &a, node &b) {
  node c;
  c.sum = a.sum + b.sum;
  c.pre = max(a.pre, a.sum + b.pre);
  c.suf = max(b.suf, b.sum + a.suf);
  c.ans = max(max(a.ans, b.ans), a.suf + b.pre);
  return c;
}
void build(long long i, long long tl, long long tr, vector<long long> &d,
           vector<long long> &h) {
  if (tl == tr) {
    node t;
    t.ans = 0;
    t.sum = d[tl];
    t.pre = 2 * h[tl];
    t.suf = 2 * h[tl] + d[tl];
    segt[i] = t;
    return;
  }
  long long tm = (tl + tr) / 2;
  build(i * 2, tl, tm, d, h);
  build(i * 2 + 1, tm + 1, tr, d, h);
  node c = combine(segt[i * 2], segt[i * 2 + 1]);
  segt[i] = c;
}
node getans(long long i, long long tl, long long tr, long long l, long long r) {
  if (l > r) {
    node t;
    t.sum = t.pre = t.suf = t.ans = INT_MIN;
    return t;
  }
  if (tl == l && tr == r) return segt[i];
  long long tm = (tl + tr) / 2;
  node a = getans(i * 2, tl, tm, l, min(tm, r));
  node b = getans(i * 2 + 1, tm + 1, tr, max(tm + 1, l), r);
  node c = combine(a, b);
  ;
  return c;
}
void pn(node a) {
  cout << "ans : " << a.ans << " pre: " << a.pre << " suf :" << a.suf
       << " sum : " << a.sum << endl;
}
void solve() {
  long long n, m;
  cin >> n >> m;
  vector<long long> d(2 * n + 1);
  vector<long long> h(2 * n + 1);
  for (int i = 1; i <= n; i++) {
    cin >> d[i];
    d[i + n] = d[i];
  }
  for (int i = 1; i <= n; i++) {
    cin >> h[i];
    h[i + n] = h[i];
  }
  build(1, 1, 2 * n, d, h);
  while (m--) {
    long long a, b;
    cin >> a >> b;
    long long l, r;
    l = b + 1;
    if (a <= b) {
      r = n + a - 1;
    } else {
      r = a - 1;
    }
    auto ans = getans(1, 1, 2 * n, l, r);
    cout << ans.ans << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t;
  t = 1;
  while (t--) solve();
  return 0;
}
