#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,x=0; // n:数量 m:要得到的米数
int arr[10001]; // arr:存放每棵树的高度
cin >> n >> m;
for(int i=1; i<=n; i++){
cin >> arr[i];
x = max(x,arr[i]);
}
int left=0, right=x, mid;
while(right-left>1){
mid = (left+right)/2; // mid:锯片的高度
// 用mid这个高度的锯片去砍树
int sum=0; //砍掉的木材之和
for(int i=1; i<=n; i++){
if(arr[i]>mid){ // 树木高于锯片
sum += (arr[i]-mid);
}
}
if(sum>=m){ // 如果砍下来的足够
left = mid; // 有可能mid就是最合适的,不能+1,
}
else{ // 砍下来的不够
right = mid; // 高度下调
}
}
cout << left;
return 0;
}