def judge(x, a, n, m):
    # 判断能否组成 x 套牌
    need = 0
    for i in range(n):
        if x > a[i]:
            need += x - a[i]  # 需要用 Joker 补的张数
    return need <= m and need <= x  # Joker 不够或超过限制则不行

def max_full_sets(n, m, a):
    # 二分查找最大可行的套数
    left = 0
    right = 10**9
    while left <= right:
        mid = (left + right) // 2
        if judge(mid, a, n, m):
            left = mid + 1
        else:
            right = mid - 1
    return right

if __name__ == "__main__":
    n, m = map(int, input().split()) 
    a = list(map(int, input().split()))
    print(max_full_sets(n, m, a))