rolete (COCI CONTEST_#5)
Time limit: 2 seconds | Memory limit: 512 MB | Task type: batch
Algorithms: sorting, prefix sum, convex hull, ternary search

# Task Rolete

One Saturday Luka woke up from an afternoon nap and remembered: today is COCI! There was only one thing that he needed to do before the contest: raise the blinds.

Luka has *n* blinds in his room, where the *i*-th one is lowered by *a<sub>i</sub>* centimeters from the top of the window. He can raise the blinds in two ways:

*   He can start lifting any singular blind manually. With this method, it takes him *t* seconds to raise the blind by 1 centimeter.
*   He can press a button, which starts raising all blinds parallel at the same speed.

The speed at which the blinds are raised with a button is defined as follows: If all blinds are still rising, each will rise by 1 centimeter in *s* seconds. If *r* blinds have already been risen to the top that slows down the system. Then it will take *s* + *k* ⋅ *r* seconds for all the remaining blinds to rise by 1 centimeter.

COCI is about to start, and Luka wants to raise his blinds as soon as possible. Meanwhile, his brother Marin entered the room and asked him *q* questions: *What is the minimum time you need to raise the blinds so that they are all lowered by at most h centimeters?* Marin is interested in the answer for each question considering the initial state of the blinds.

They realized that there is not enough time to think about it before COCI. Fortunately, the problem has just appeared here as well! Help them solve it!

*Note:* Luka will always raise the blind by an integer value of centimeters.

## Input

The first line contains integers *n*, *t*, *s* and *k* (1 ≤ *n*, *t*, *s* ≤ 10<sup>5</sup>, 0 ≤ *k* ≤ 10<sup>5</sup>), the number of blinds, the time required to raise a blind manually, the time required to raise a blind with a button and the slowing factor of parallel raising.

The second line contains *n* integers *a<sub>i</sub>* (0 ≤ *a<sub>i</sub>* ≤ 10<sup>5</sup>), the initial state of blinds.

The third line contains integer *q* (1 ≤ *q* ≤ 10<sup>5</sup>), number of questions.

The fourth line contains *q* integers *h<sub>i</sub>* (0 ≤ *h<sub>i</sub>* ≤ 10<sup>5</sup>), required maximal blind height.

## Output

In first and only line print *q* numbers, the *i*-th of them is the minimum time for raising the blinds such that they are lowered by at most *h<sub>i</sub>* centimeters.

## Scoring

| Subtask | Points | Constraints                |
|---------|--------|----------------------------|
| 1       | 16     | *n*, *q*, *a<sub>i</sub>*, *h<sub>i</sub>* ≤ 100   |
| 2       | 26     | *k* = 0                      |
| 3       | 32     | *q* = 1                    |
| 4       | 36     | No additional constraints. |

## Examples

| Input                          | Input                        | Input                             |
|--------------------------------|------------------------------|-----------------------------------|
| 3 2 5 1<br>2 2 4<br>3<br>2 0 1 | 2 3 4 0<br>3 1<br>3<br>3 2 0 | 4 3 10 3<br>2 4 5 6<br>3<br>4 3 0 |
| Output                         | Output                       | Output                            |
| 4 14 9                         | 0 3 10                       | 9 18 47                           |

## Clarification of the first example:

To have all blinds lowered by at most 2 centimeters, Luka needs to manually raise the third blind by 2 centimeters. The quickest way to do this is to raise it manually. This will take him 4 seconds.

If all blinds need to be fully raised, Luka can first raise the third blind by 2 centimeters manually. Now he can press the button and let the blinds rise in parallel by 2 centimeters. In total, that will take 4 + 10 = 14 seconds.

Similarly, if the blinds need to be lowered by at most 1 centimeter, Luka will first raise the third blind by 2 centimeters, and then raise all blinds together by 1 centimeter. The total time for raising will be 9 seconds.

Starter code:

Grader code:

Setup script:

Evaluation script: