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))