func_code_string:    #include<bits/stdc++.h>   using namespace std;   #define int long long   const int maxn = 2000005;   int tag[maxn],summ[maxn];   int len[maxn];   int n,k;   void push_up(int p){    summ[p] = summ[p<<1] + summ[p<<1|1];   }   void push_down(int p,int l,int r){    if(tag[p] == 0) return;    int x = tag[p];    tag[p] = 0; int mid = (l+r)>>1;    tag[p<<1] += x,tag[p<<1|1] += x;    summ[p<<1] += x * (mid - l + 1);    summ[p<<1|1] += x * (r - mid);   }   void build(int l,int r,int p)   {    tag[p] = 0;    if(l == r){     if(l == 1) summ[p] = 1;     else summ[p] = 0;     return;    }    int mid = (l+r)>>1;    build(l,mid,p<<1);    build(mid+1,r,p<<1|1);    push_up(p);   }   void gai(int l,int r,int p,int ll,int rr,int z){    if(ll > rr) return;    if(l != r) push_down(p,l,r);    if(ll <= l && r <= rr){     summ[p] += (r - l + 1) * z;     tag[p] += z;     if(l != r) push_down(p,l,r);     return;    }    int mid = (l+r)>>1;    if(ll <= mid) gai(l,mid,p<<1,ll,rr,z);    if(rr > mid) gai(mid+1,r,p<<1|1,ll,rr,z);    push_up(p);   }   int cha(int l,int r,int p,int z){   // printf( %lld %lld %lld n ,l,r,summ[p]);    if(l == r) return l;    else push_down(p,l,r);    int mid = (l+r)>>1;    if(z <= summ[p<<1]){     return cha(l,mid,p<<1,z);//第z小    }    z -= summ[p<<1];    return cha(mid+1,r,p<<1|1,z);   }   void chong(int l,int r,int p)   {    if(l == r) return;    push_down(p,l,r);    int mid = (l+r)>>1;    chong(l,mid,p<<1);    chong(mid+1,r,p<<1|1);   }   signed main()   {    scanf( %lld%lld ,&n,&k);    for(int i=1;i<=n;++i) scanf( %lld ,&len[i]);    sort(len + 1,len + n + 1);    reverse(len + 1,len + n + 1);    build(1,300000,1);    int ans = 1e9;   // for(int i=1;i<=n;++i) printf( %lld  ,len[i]);   // return 0;    for(int i=1;i<=n+1;++i){    // printf(  n n );     if(summ[1] >= k)     {      int ak = cha(1,300000,1,k);      ans = min(ans,ak);      //printf( %lld n ,ak);     }     if(n == i - 1) break;    // chong(1,300000,1);     int akk = cha(1,300000,1,1);     gai(1,300000,1,akk,akk,-1);//直接-1    // printf( %lld n ,akk);   //  return 0;     int x = len[i];     x --;     akk += 2;//在这里减     if(x % 2 == 0){      gai(1,300000,1,akk,akk + x/2 - 1,2);     }     else{     // printf( %lld n ,akk);      gai(1,300000,1,akk,akk + x/2-1,1);//3      gai(1,300000,1,akk,akk + x/2,1);//3 4     }    }    if(ans != 1e9)    printf( %lld n ,ans-1);    else printf( -1 );   }