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


const int N = 1e5+7;
int a[N];
long long tr[4*N];
int lz[4*N];

///1. Merge left and right
long long combine (long long left, long long right) {
    return left + right;
}

///2. Push lazy down and merge lazy
void propagate(int u, int st, int en) {
    if (!lz[u]) return;
    tr[u] += (en-st+1)*lz[u];
    if (st!=en) {
        lz[2*u] += lz[u];
        lz[2*u+1] += lz[u];
    }
    lz[u] = 0;
}

void update(int u, int st, int en, int l, int r, int x) {
    propagate(u, st, en);
    if (r<st || en<l)  return;
    else if (l<=st && en<=r) {
        lz[u] += x;             ///4. Merge lazy
        propagate(u, st, en);
    }
    else {
        int mid = (st+en)/2;
        update(2*u, st, mid, l, r, x);
        update(2*u+1, mid+1, en, l, r, x);
        tr[u] = combine(tr[2*u], tr[2*u+1]);
    }
}

long long query(int u, int st, int en, int l, int r) {
    propagate(u, st, en);
    if (r<st || en<l)  return 0;        /// 5. Proper null value
    else if (l<=st && en<=r)    return tr[u];
    else {
        int mid = (st+en)/2;
        return combine(query(2*u, st, mid, l, r), query(2*u+1, mid+1, en, l, r));
    }
}

int find(int u, int st, int en, int k) {
    propagate(u, st, en);
    if (st == en)   return st;

    int mid = (st+en)/2;
    propagate(2*u, st, mid);

    assert(tr[u] >= k);

    if (tr[2*u] >= k)   return find(2*u, st, mid, k);
    else                return find(2*u+1, mid+1, en, k-tr[2*u]);

}


int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n, k;
    cin>>n>>k;

    vector<int> a(n);
    for (int i=0; i<n; i++) cin>>a[i];
    sort(a.rbegin(), a.rend());

    update(1, 0, N, 0, 0, 1);
    int ans = N;
    long long sum = 1;

    for (int x: a) {
        int d = find(1, 0, N, 1);

        update(1,0,N,d,d,-1);
        int ll = x/2, rr = x-1-x/2;
        sum += ll+rr-1;
        update(1,0,N, d+2, d+rr+1, 2);
        if (ll > rr)    update(1,0,N, d+ll+1, d+ll+1, 1);

        if (sum >= k)  ans = min(ans, find(1,0,N,k));
    }

    if (ans == N) ans = -1;
    cout<<ans<<endl;

}
