import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
st.nextToken();
int n = (int) st.nval;
st.nextToken();
int m = (int) st.nval;
int max = 0;
int[] trees = new int[n];
for (int i = 0; i < trees.length; i++) {
st.nextToken();
trees[i] = (int) st.nval;
max = Math.max(max, trees[i]);
}
int left = 0;
int mid = 0;
int ans = 0;
while (left <= max) {
mid = (left + max) / 2;
ans = 0;
for (int i = 0; i < n; i++) {
if (trees[i] > mid) {
ans += trees[i] - mid;
}
}
if (ans < m) {
max = mid - 1;
} else {
left = mid + 1;
}
}
out.print(left-1);
out.close();
}
}