#include <bits/stdc++.h>
using namespace std;
int const N = 1e5 + 20, LG = 22;
int n, m, h[N], d[LG][N];
int res[LG][N], l[LG][N], r[LG][N];
int32_t main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> d[0][i];
  }
  for (int i = 0; i < n; i++) {
    cin >> h[i];
  }
  for (int i = 0; i < n; i++) {
    res[0][i] = 0;
    l[0][i] = 2 * h[i] + d[0][i];
    r[0][i] = 2 * h[i] + 0;
  }
  for (int i = 1, gap = 2; i < LG; i++, gap *= 2) {
    for (int j = 0; j < n; j++) {
      int mid = (j + gap / 2) % n;
      d[i][j] = d[i - 1][j] + d[i - 1][mid];
      l[i][j] = max(l[i - 1][j] + d[i - 1][mid], l[i - 1][mid]);
      r[i][j] = max(r[i - 1][j], d[i - 1][j] + r[i - 1][mid]);
      res[i][j] =
          max(max(res[i - 1][j], res[i - 1][mid]), l[i - 1][j] + r[i - 1][mid]);
    }
  }
  while (m--) {
    int L, R;
    cin >> L >> R;
    L--, R--;
    L = (L - 1 + n) % n, R = (R + 1) % n;
    swap(L, R);
    int len = (R - L + n) % n + 1;
    int ans = 0, now_l = 0;
    for (int i = 0; i < LG; i++) {
      if (len & (1 << i)) {
        ans = max(ans, res[i][L]);
        ans = max(ans, now_l + r[i][L]);
        now_l = max(now_l + d[i][L], l[i][L]);
        L = (L + (1 << i)) % n;
      }
    }
    cout << ans << '\n';
  }
}
