_, k = list(map(int, input().split()))

A = [*list(map(int, input().split()))]

ng, ok = 0, 1<<30

while ok - ng > 1:

    m = (ng + ok) // 2

    if k < sum([(a-1)//m for a in A]): ng = m

    else: ok = m

print(ok)

_, k = list(map(int, input().split()))

A = [*list(map(int, input().split()))]

ng, ok = 0, 1<<30

while ok - ng > 1:

    m = (ng + ok) // 2

    if k < sum((a-1)//m for a in A): ng = m

    else: ok = m

print(ok)

_, k = list(map(int, input().split()))
A = [*list(map(int, input().split()))]
ng, ok = 0, 1 << 30
while ok - ng > 1:
    m = (ng + ok) // 2
    if k < sum([(a - 1) // m for a in A]):
        ng = m
    else:
        ok = m
print(ok)

_, k = list(map(int, input().split()))
A = [*list(map(int, input().split()))]
ng, ok = 0, 1 << 30
while ok - ng > 1:
    m = (ng + ok) // 2
    if k < sum((a - 1) // m for a in A):
        ng = m
    else:
        ok = m
print(ok)

-    if k < sum([(a - 1) // m for a in A]): +    if k < sum((a - 1) // m for a in A):