#include <bits/stdc++.h>
using namespace std;
set<pair<long long, int>> l[1000100], r[1000100], f[1], g[1];
long long sum = 0;
int n, m;
long long d[200100], h[200100];
void add(set<pair<long long, int>> seg[], long long val, int l, int r, int ind,
         int x) {
  if (x > r or x < l) return;
  if (l == r) {
    seg[ind].insert({val, x});
    return;
  }
  int mid = (l + r) / 2;
  add(seg, val, l, mid, ind * 2, x);
  add(seg, val, mid + 1, r, ind * 2 + 1, x);
  for (auto i : seg[ind * 2]) seg[ind].insert(i);
  for (auto i : seg[ind * 2 + 1]) seg[ind].insert(i);
  while (seg[ind].size() > 2) {
    auto it = seg[ind].begin();
    seg[ind].erase(it);
  }
}
void calc(set<pair<long long, int>> seg[], int l, int r, int x, int y, int ind,
          set<pair<long long, int>> f[]) {
  if (x > r or y < l) return;
  if (l >= x and r <= y) {
    for (auto i : seg[ind]) f[0].insert(i);
    while (f[0].size() > 2) {
      auto it = f[0].begin();
      f[0].erase(it);
    }
    return;
  }
  int mid = (l + r) / 2;
  calc(seg, l, mid, x, y, ind * 2, f);
  calc(seg, mid + 1, r, x, y, ind * 2 + 1, f);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> d[i];
  for (int i = 1; i <= n; i++) cin >> h[i];
  for (int i = n + 1; i <= 2 * n; i++) d[i] = d[i - n], h[i] = h[i - n];
  for (int i = 1; i <= 2 * n; i++) {
    int x = i % n;
    if (x == 0) x = n;
    add(l, 2 * h[x] + sum, 1, 2 * n, 1, i);
    add(r, 2 * h[x] - sum, 1, 2 * n, 1, i);
    sum += d[x];
  }
  while (m--) {
    f[0].clear(), g[0].clear();
    int a, b;
    cin >> a >> b;
    if (a <= b) {
      calc(l, 1, 2 * n, b + 1, a + n - 1, 1, f);
      calc(r, 1, 2 * n, b + 1, a + n - 1, 1, g);
    } else {
      calc(l, 1, 2 * n, b + 1, a - 1, 1, f);
      calc(r, 1, 2 * n, b + 1, a - 1, 1, g);
    }
    auto it1_f = f[0].end();
    it1_f--;
    auto it2_f = f[0].end();
    it2_f--;
    it2_f--;
    auto it1_g = g[0].end();
    it1_g--;
    auto it2_g = g[0].end();
    it2_g--;
    it2_g--;
    if (it1_f->second != it1_g->second)
      cout << it1_f->first + it1_g->first << "\n";
    else
      cout << max(it2_f->first + it1_g->first, it1_f->first + it2_g->first)
           << "\n";
  }
  return 0;
}
