1132_D. Stressful Training
Berland SU holds yet another training contest for its students today. n students came, each of them brought his laptop. However, it turned out that everyone has forgot their chargers!

Let students be numbered from 1 to n. Laptop of the i-th student has charge a_i at the beginning of the contest and it uses b_i of charge per minute (i.e. if the laptop has c charge at the beginning of some minute, it becomes c - b_i charge at the beginning of the next minute). The whole contest lasts for k minutes.

Polycarp (the coach of Berland SU) decided to buy a single charger so that all the students would be able to successfully finish the contest. He buys the charger at the same moment the contest starts.

Polycarp can choose to buy the charger with any non-negative (zero or positive) integer power output. The power output is chosen before the purchase, it can't be changed afterwards. Let the chosen power output be x. At the beginning of each minute (from the minute contest starts to the last minute of the contest) he can plug the charger into any of the student's laptops and use it for some integer number of minutes. If the laptop is using b_i charge per minute then it will become b_i - x per minute while the charger is plugged in. Negative power usage rate means that the laptop's charge is increasing. The charge of any laptop isn't limited, it can become infinitely large. The charger can be plugged in no more than one laptop at the same time.

The student successfully finishes the contest if the charge of his laptop never is below zero at the beginning of some minute (from the minute contest starts to the last minute of the contest, zero charge is allowed). The charge of the laptop of the minute the contest ends doesn't matter.

Help Polycarp to determine the minimal possible power output the charger should have so that all the students are able to successfully finish the contest. Also report if no such charger exists.

Input

The first line contains two integers n and k (1 ≤ n ≤ 2 ⋅ 10^5, 1 ≤ k ≤ 2 ⋅ 10^5) — the number of students (and laptops, correspondigly) and the duration of the contest in minutes.

The second line contains n integers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 10^{12}) — the initial charge of each student's laptop.

The third line contains n integers b_1, b_2, ..., b_n (1 ≤ b_i ≤ 10^7) — the power usage of each student's laptop.

Output

Print a single non-negative integer — the minimal possible power output the charger should have so that all the students are able to successfully finish the contest.

If no such charger exists, print -1.

Examples

Input


2 4
3 2
4 2


Output


5


Input


1 5
4
2


Output


1


Input


1 6
4
2


Output


2


Input


2 2
2 10
3 15


Output


-1

Note

Let's take a look at the state of laptops in the beginning of each minute on the first example with the charger of power 5:

  1. charge: [3, 2], plug the charger into laptop 1; 
  2. charge: [3 - 4 + 5, 2 - 2] = [4, 0], plug the charger into laptop 2; 
  3. charge: [4 - 4, 0 - 2 + 5] = [0, 3], plug the charger into laptop 1; 
  4. charge: [0 - 4 + 5, 3 - 2] = [1, 1]. 



The contest ends after the fourth minute.

However, let's consider the charger of power 4:

  1. charge: [3, 2], plug the charger into laptop 1; 
  2. charge: [3 - 4 + 4, 2 - 2] = [3, 0], plug the charger into laptop 2; 
  3. charge: [3 - 4, 0 - 2 + 4] = [-1, 2], the first laptop has negative charge, thus, the first student doesn't finish the contest. 



In the fourth example no matter how powerful the charger is, one of the students won't finish the contest.
```python
import sys
import os
from math import trunc

s = os.read(0,os.fstat(0).st_size)

inp = []
sign = 1.0
numb = 0.0
 
for i in range(len(s)):
    if s[i]>=48:
        numb = 10.0*numb + s[i]-48.0
    else:
        if s[i]==45:
            sign = -1.0
        elif s[i]!=13:
            inp.append(sign*numb)
            numb = 0.0
            sign = 1.0
if s[-1]>=48:
    inp.append(sign*numb)

n,k = int(inp[0]),int(inp[1])
A = inp[2:2+n]
B = inp[2+n:2+2*n]
Binv = [1.0/b for b in B]

turn_data = [0]*n
for i in range(n):
    a = A[i]
    binv = Binv[i]
    #a-t*b>=0
    #t<=a/b
    t = trunc(a*binv)
    # Need to be updated at latest
    turn_data[i] = int(t)

a = 0
b = 2*10**12
while a<b:
    c = (a+b)//2
    x = 1.0*c
    updater = [[] for _ in range(k)]
    for i in range(n):
        if turn_data[i]<k:
            updater[turn_data[i]].append(i)

    last_updated = [0]*n
    charge = A[:]

    failed = False
    updater_ind = 0
    for turn in range(k):
        while updater_ind<k and not updater[updater_ind]:updater_ind += 1
        if updater_ind==k:break

        ind = updater[updater_ind].pop()
        val = updater_ind

        #if val>=big:
        #    #Success
        #    break
        if turn>val:
            failed = True
            break
        charge[ind] += x - B[ind]*(turn-last_updated[ind])
        last_updated[ind] = turn
        next_update = turn + trunc(charge[ind]*Binv[ind])
        if next_update<k:
            updater[int(next_update)].append(ind)
    if failed:
        a = c+1
    else:
        b = c
if b == 2*10**12:
    print(-1)
else:
    print(b)
```