Problem E

Statement
Copy Copied
Description:
Dreamoon has just created a document of hard problems using notepad.exe. The document consists of n lines of text, ai denotes the length of the i-th line. He now wants to know what is the fastest way to move the cursor around because the document is really long.

Let (r, c) be a current cursor position, where r is row number and c is position of cursor in the row. We have 1 ≤ r ≤ n and 0 ≤ c ≤ ar.

We can use following six operations in notepad.exe to move our cursor assuming the current cursor position is at (r, c):

1. up key: the new cursor position (nr, nc) = (max(r - 1, 1), min(anr, c))
2. down key: the new cursor position (nr, nc) = (min(r + 1, n), min(anr, c))
3. left key: the new cursor position (nr, nc) = (r, max(0, c - 1))
4. right key: the new cursor position (nr, nc) = (r, min(anr, c + 1))
5. HOME key: the new cursor position (nr, nc) = (r, 0)
6. END key: the new cursor position (nr, nc) = (r, ar)

You're given the document description (n and sequence ai) and q queries from Dreamoon. Each query asks what minimal number of key presses is needed to move the cursor from (r1, c1) to (r2, c2).

Input Format:
The first line contains an integer n(1 ≤ n ≤ 400, 000) — the number of lines of text.

The second line contains n integers a1, a2, ..., an(1 ≤ ai ≤ 108).

The third line contains an integer q(1 ≤ q ≤ 400, 000).

Each of the next q lines contains four integers r1, c1, r2, c2 representing a query (1 ≤ r1, r2 ≤ n, 0 ≤ c1 ≤ ar1, 0 ≤ c2 ≤ ar2).

Output Format:
For each query print the result of the query.

Note:
In the first sample, the first query can be solved with keys: HOME, right.

The second query can be solved with keys: down, down, down, END, down.

The third query can be solved with keys: down, END, down.

The fourth query can be solved with keys: END, down.