OpenKattis

# Quiz

In the quiz ProgrammeringsQuiz there are $N$ questions in total, distributed over $M$ different categories (for example, algorithm theory, compiler construction or Sven knowledge).

The questions are worth different amounts of points. Additionally, you will get a bonus $B$ if you answer all questions in a certain category. Simone has participated in Programmeringsolympiaden since 8th grade, so she is able to answer all the questions.

Unfortunately, there is a time limit to the quiz. Despite never giving the wrong answer, Simone will only have time to answer $K$ questions. What is the maximum number of points she can achieve?

## Input

The first line consists of four integers $1 \le N \le 1000$, $1 \le M \le N$, $1 \le K \le N$, $1 \le B \le 100\, 000$. The following $N$ lines consist of two integers each: the points given for answering the question (an integer between $1$ and $1\, 000$) and which category it belongs to (between $1$ and $M$). Each category will have at least one question.

## Output

Print one line containing the maximal possible number of points.

Your solution will be tested on several groups of test cases. To get points for a group you need to pass all the tests of that group.

 Group Points Constraints 1 16 $N \le 100, M = 1$ 2 29 $M \le 5$ 3 20 all question give the same number of points 4 35
Sample Input 1 Sample Output 1
5 3 3 1000
300 1
400 1
200 2
200 3
300 3

2900

Sample Input 2 Sample Output 2
5 3 3 1
300 1
400 1
200 2
300 3
200 3

1001