n, k = map(int, input().split())
W = [int(input()) for _ in range(n)]

left = 0
right = 10000 * n

def Chech(P,k,arr):
    weight = 0
    n_trucks = 1
    for i,a in enumerate(arr):
        # iの荷物について積むかどうか決め、それに応じてトラックの数を増加させる
        if P < a:
            return i
        if weight +a <= P:
            weight += a
        else:
            n_trucks += 1  # Pを超えるなら次のtruckを用意
            weight = a  # 新たなトラックに積んでいる
        if n_trucks == k + 1:  # k+1台目のtruckは存在しない。これまでに積んだ荷物の数を返す
            return i

    return len(arr)  # すべて運べるならlen(arr)を返すとする

# right - left > 0　だと無限ループに入るっぽい
while right - left > 1:
    mid = (left+right)//2
    v = Chech(mid,k,W)

    if v >= n:
        right = mid
    else:
        left = mid

print(right) n, k = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split k int(input()) for _ in range(n) for _ in range(n) _ range(n) range n for _ in range(n) int(input()) int input() input W = [int(input()) for _ in range(n)] W [int(input()) for _ in range(n)] left = 0 left 0 right = 10000 * n right 10000 * n 10000 n def Chech(P,k,arr):
    weight = 0
    n_trucks = 1
    for i,a in enumerate(arr):
        # iの荷物について積むかどうか決め、それに応じてトラックの数を増加させる
        if P < a:
            return i
        if weight +a <= P:
            weight += a
        else:
            n_trucks += 1  # Pを超えるなら次のtruckを用意
            weight = a  # 新たなトラックに積んでいる
        if n_trucks == k + 1:  # k+1台目のtruckは存在しない。これまでに積んだ荷物の数を返す
            return i

    return len(arr)  # すべて運べるならlen(arr)を返すとする

# right - left > 0　だと無限ループに入るっぽい Chech weight = 0 weight 0 n_trucks = 1 n_trucks 1 for i,a in enumerate(arr):
        # iの荷物について積むかどうか決め、それに応じてトラックの数を増加させる
        if P < a:
            return i
        if weight +a <= P:
            weight += a
        else:
            n_trucks += 1  # Pを超えるなら次のtruckを用意
            weight = a  # 新たなトラックに積んでいる
        if n_trucks == k + 1:  # k+1台目のtruckは存在しない。これまでに積んだ荷物の数を返す
            return i

     i a enumerate(arr) enumerate arr if P < a:
            return i
         P < a P a return i i if weight +a <= P:
            weight += a
        else:
            n_trucks += 1  # Pを超えるなら次のtruckを用意
            weight = a  # 新たなトラックに積んでいる
         weight +a <= P weight +a weight a P weight += a weight a n_trucks += 1 n_trucks 1 weight = a weight a if n_trucks == k + 1:  # k+1台目のtruckは存在しない。これまでに積んだ荷物の数を返す
            return i

     n_trucks == k + 1 n_trucks k + 1 k 1 return i i return len(arr) len(arr) len arr P P k k arr arr while right - left > 1:
    mid = (left+right)//2
    v = Chech(mid,k,W)

    if v >= n:
        right = mid
    else:
        left = mid right - left > 1 right - left right left 1 mid = (left+right)//2 mid (left+right)//2 left+right left right 2 v = Chech(mid,k,W) v Chech(mid,k,W) Chech mid k W if v >= n:
        right = mid
    else:
        left = mid v >= n v n right = mid right mid left = mid left mid print(right) print right def Chech(P,k,arr):
    weight = 0
    n_trucks = 1
    for i,a in enumerate(arr):
        # iの荷物について積むかどうか決め、それに応じてトラックの数を増加させる
        if P < a:
            return i
        if weight +a <= P:
            weight += a
        else:
            n_trucks += 1  # Pを超えるなら次のtruckを用意
            weight = a  # 新たなトラックに積んでいる
        if n_trucks == k + 1:  # k+1台目のtruckは存在しない。これまでに積んだ荷物の数を返す
            return i

    return len(arr)  # すべて運べるならlen(arr)を返すとする

# right - left > 0　だと無限ループに入るっぽい def Chech(P,k,arr):
    weight = 0
    n_trucks = 1
    for i,a in enumerate(arr):
        # iの荷物について積むかどうか決め、それに応じてトラックの数を増加させる
        if P < a:
            return i
        if weight +a <= P:
            weight += a
        else:
            n_trucks += 1  # Pを超えるなら次のtruckを用意
            weight = a  # 新たなトラックに積んでいる
        if n_trucks == k + 1:  # k+1台目のtruckは存在しない。これまでに積んだ荷物の数を返す
            return i

    return len(arr)  # すべて運べるならlen(arr)を返すとする

# right - left > 0　だと無限ループに入るっぽい Chech left = 0 0 left mid = (left+right)//2 (left+right)//2 mid right = 10000 * n 10000 * n right n, k = map(int, input().split()) map(int, input().split()) n right = mid mid right W = [int(input()) for _ in range(n)] [int(input()) for _ in range(n)] W v = Chech(mid,k,W) Chech(mid,k,W) v left = mid mid left k = map(int, input().split()) map(int, input().split()) k
n, k = map(int, input().split())
W = [int(input()) for _ in range(n)]

left = 0
right = 10000 * n

def Chech(P,k,arr):
    weight = 0
    n_trucks = 1
    for i,a in enumerate(arr):
        # iの荷物について積むかどうか決め、それに応じてトラックの数を増加させる
        if P < a:
            return i
        if weight +a <= P:
            weight += a
        else:
            n_trucks += 1  # Pを超えるなら次のtruckを用意
            weight = a  # 新たなトラックに積んでいる
        if n_trucks == k + 1:  # k+1台目のtruckは存在しない。これまでに積んだ荷物の数を返す
            return i

    return len(arr)  # すべて運べるならlen(arr)を返すとする

# right - left > 0　だと無限ループに入るっぽい
while right - left > 1:
    mid = (left+right)//2
    v = Chech(mid,k,W)

    if v >= n:
        right = mid
    else:
        left = mid

print(right)
