OpenKattis
Programmeringsolympiadens finaltävling 2016

Start

2016-02-06 09:00 CET

Programmeringsolympiadens finaltävling 2016

End

2016-02-06 14:00 CET
The end is near!
Contest is over.
Not yet started.
Contest is starting in -2994 days 0:21:28

Time elapsed

5:00:00

Time remaining

0:00:00

Problem D
Frågetävling

I frågetävlingen ProgrammeringsQuiz finns det totalt $N$ frågor, fördelade över $M$ olika kategorier (t.ex. algoritmteori, kompilatorkonstruktion eller Sven-kunskap).

Frågorna är värda olika mycket poäng. Dessutom får du en bonus $B$ när du löser samtliga problem i en viss kategori. Simone har varit med i Programmeringsolympiaden sen åttonde klass, så hon kommer kunna svara rätt på alla frågor.

Tyvärr går tävlingen på tid. Trots att hon aldrig svarar fel kommer hon bara hinna svara på $K$ av frågorna. Vilken poäng kan Simone maximalt uppnå?

Input

Den första raden innehåller de fyra heltalen $1 \le N \le 1000$, $1 \le M \le N$, $1 \le K \le N$, $1 \le B \le 100\, 000$. De följande $N$ raderna innehåller två tal var: poängen för frågan (ett heltal mellan 1 och $1\, 000$) och vilken kategori den ingår i (mellan 1 och $M$). Det är garanterat att alla kategorier kommer att innehålla minst en fråga.

Output

Du ska skriva ut en enda rad med den maximala poängen du kan uppnå.

Poängsättning

Din lösning kommer att testas på en mängd testfallsgrupper. För att få poäng för en grupp så måste du klara alla testfall i gruppen.

Grupp

Poängvärde

Begränsningar

1

16

$N \le 100, M = 1$

2

29

$M \le 5$

3

20

alla frågor ger lika mycket poäng

4

35

 

Förklaring

I det första exemplet svarar vi på båda frågorna i kategori 1 ($300 + 400 = 700$ poäng) och den enda frågan i kategori 2 ($200$ poäng). Eftersom dessa var de enda frågorna i de två kategorierna får vi även två stycken kategoribonusar, vilket ger totalt $200 + 700 + 2 \cdot 1000 = 2900$ poäng.

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