Турнір Багатокутного столу#8783

Турнір Багатокутного столу

1 секунда
64 мегабайти
Легка

Турнір на Багатокутному Столі збирає учасників, які змагаються у зборі монет, викликаючи один одного на дуель. Кожен учасник має унікальну силу, і учасник може отримати монети від іншого лише тоді, коли його сила більша. Проте, згідно з правилами турніру, кожен учасник може здобути монети не більше ніж у інших суперників.

Спочатку кожен учасник має певну кількість монет. Коли учасник виграє дуель у іншого, він забирає всі монети у переможеного суперника.

Кожного учасника цікавить: яку максимальну кількість монет він міг би накопичити, якщо ініціює лише свої виклики?

Ваша задача — визначити цю максимальну кількість для кожного учасника.

Вхідні дані

Перший рядок містить два цілі числа та (1 \leq n \leq 10^5, 0 \leq k \leq \min(n-1, 30)) — кількість учасників та максимальну кількість дуелей, які може ініціювати кожен учасник.

Другий рядок містить цілих чисел p_1, p_2, , p_n (1 \leq p_i \leq 10^9) — сили учасників, які всі різні.

Третій рядок містить цілих чисел c_1, c_2, , c_n (1 \leq c_i \leq 10^9) — кількість монет, з якою починає кожен учасник.

Вихідні дані

Виведіть цілих чисел — максимальну кількість монет, яку кожен учасник може отримати.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Приклад 3

Loading
Loading