#include<bits/stdc++.h>
using namespace std;

int a[1000000], n, m, ans = -1, max1 = 0;

// 计算高度为h时能砍下的木材总量
int sa(int h) {
    int s = 0;
    for (int i = 0; i < n; i++) {
        if (a[i] > h) {
            s += a[i] - h;
        }
    }
    return s;
}

// 二分查找最大高度
void ss(int l, int r) {
    if (l <= r) {
        int mid = (l + r) / 2;
        int sum = sa(mid);
        
        if (sum >= m) {
            // 当前高度满足条件,尝试更高的高度
            ans = mid;
            ss(mid + 1, r);
        } else {
            // 当前高度不满足,尝试更低的高度
            ss(l, mid - 1);
        }
    }
}

int main() {
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        if (a[i] > max1) {
            max1 = a[i];
        }
    }
    ss(0, max1);
    cout << ans;
    return 0;
}
/**************************************************************
	Problem: 1908
	User: zzz
	Language: C++
	Result: Wrong Answer
****************************************************************/