#include <bits/stdc++.h>
using namespace std;
const long long int maxN = 4e5 + 100;
const long long int maxM = 8e5 + 100;
const long long int mod = 1e9 + 7;
const long long int hmod = 1e16 + 7;
const long double PI = 3.141592653;
const long double eps = 1e-8;
const long long int D = 1379;
const long long int INF = 1e18 + 20;
const long long int Inf = 1e9 + 140;
long long int n, m, d[maxN], h[maxN], sum_n[maxN], sum_p[maxN];
long long int segL[maxM], segR[maxM], segA[maxM], R[maxN], L[maxN], mx, mxL;
void input_pre() {
  cin >> n >> m;
  for (long long int i = 1; i <= n; i++) cin >> d[i], d[i + n] = d[i];
  for (long long int i = 1; i <= n; i++) cin >> h[i], h[i + n] = h[i];
  for (long long int i = 1; i <= n + n; i++) {
    sum_n[i] = sum_n[i - 1] - d[i - 1];
    sum_p[i] = sum_p[i - 1] + d[i - 1];
    L[i] = h[i] + h[i] + sum_n[i];
    R[i] = h[i] + h[i] + sum_p[i];
  }
  L[0] = R[0] = -INF;
}
void build(long long int l = 1, long long int r = n + n,
           long long int node = 1) {
  if (l == r) {
    segL[node] = L[l];
    segR[node] = R[l];
    return;
  }
  long long int mid = (l + r) / 2;
  build(l, mid, node * 2);
  build(mid + 1, r, node * 2 + 1);
  segR[node] = max(segR[node * 2], segR[node * 2 + 1]);
  segL[node] = max(segL[node * 2], segL[node * 2 + 1]);
  segA[node] = max(segA[node * 2], segA[node * 2 + 1]);
  segA[node] = max(segL[node * 2] + segR[node * 2 + 1], segA[node]);
}
void findA(long long int x, long long int y, long long int l = 1,
           long long int r = n + n, long long int node = 1) {
  if (l > y || r < x) return;
  if (x <= l && y >= r) {
    mx = max(mx, segA[node]);
    if (mxL != -INF) mx = max(mx, segR[node] + mxL);
    mxL = max(mxL, segL[node]);
    return;
  }
  long long int mid = (r + l) / 2;
  findA(x, y, l, mid, node * 2);
  findA(x, y, mid + 1, r, node * 2 + 1);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  input_pre();
  build();
  while (m--) {
    long long int x, y;
    cin >> x >> y;
    if (x <= y) x += n;
    mx = mxL = -INF;
    findA(y + 1, x - 1);
    cout << mx << endl;
  }
}
