const
  maxn = 100000;
  maxl = 1000000000;
  maxh = 1000000000;
  maxm = 100000;

var
  h, l : array[1..maxn] of integer;
  rh : array[1..maxn] of int64;
  n, i, m, a, b : integer;

procedure qsort(l, r : integer);
var
  i, j : integer;
  x, t : int64;
begin
  if l >= r then exit;
  i := l;
  j := r;
  x := rh[l + random(r - l + 1)];
  while (i <= j) do begin
    while (rh[i] < x) do i := i + 1;
    while (rh[j] > x) do j := j - 1;
    if (i <= j) then begin
      t := rh[i]; rh[i] := rh[j]; rh[j] := t;
      i := i + 1;
      j := j - 1;
    end;
  end;
  qsort(l, j);
  qsort(i, r);
end;

begin
  reset(input, 'firtree.in');
  rewrite(output, 'firtree.out');
  read(n);
  assert((2 <= n) and (n <= maxn));
  for i := 1 to n do begin
    read(l[i]);
    assert((1 <= l[i]) and (l[i] <= maxl));
  end;
  rh[1] := 0;
  for i := 1 to n - 1 do begin
    read(h[i]);
    assert((-maxh <= h[i]) and (h[i] <= maxh));
    rh[i + 1] := rh[i] + h[i];
  end;
  qsort(1, n);
  read(m);
  assert((1 <= m) and (m <= maxm));
  for i := 1 to m do begin
    read(a, b);
    assert((1 <= a) and (a <= n));
    assert((1 <= b) and (b <= n));
    assert(a <> b);
    writeln(l[a] + l[b] + abs(rh[b] - rh[a]));
  end;
end.