#include<bits/stdc++.h>
#define rep(i,m,n) for (int i=m;i<n;i++)
using namespace std;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int N,K,M;
	cin>>N>>K>>M;
	int sum=0;
	rep(i,0,N-1){
		int data;
		cin>>data;
		sum +=data;
	}
	if(sum/N>=M){
			cout<<0<<endl;
			return 0;
		}
	
	rep(i,0,K+1){
		int d=(sum+i)/N==M;
		if(d)
			{
				cout<<i<<endl;
				return 0;
			}
		
	}
	cout<<-1<<endl;
}

#include<bits/stdc++.h>
using namespace std;
#define foreach(i,n) for(auto&i:(n))
#define all(x) (x).begin(),(x).end()
using ll = long long;

template<class t>
auto collect(int n,t f){
    vector<decltype(f())> res(n);
    for(auto &i:res){
        i = f();
    }
    return res;
}

template<class t,class f>
auto mapcar(t x,f func){
    int n = x.size();
    vector<typename t::value_type> res(n);
    auto itr = res.begin();
    for(auto &i:x){
        *itr = func(i);
        ++itr;
    }
    return res;
}
template<class t,class f>
void mapc(t x,f func){
    for(auto &i:x){
        func(i);
    }
}
template<class t,class u>
auto sellect(t x,u f){
    vector<typename t::value_type> res;
    for(auto &i:x){
        if(f(i)){
            res.push_back(i);
        }
    }
    return res;
}

ll in(){
    ll res;
    scanf("%lld",&res);
    return res;
}

int main(){
    int n = in();
    int k = in();
    int m = in();
    vector<ll> line = collect(n-1,in);
    ll ans = n * m - accumulate(all(line),0ll);
    if(ans<=k){
        cout << max(0ll,ans) << endl;
    }else{
        cout << -1 << endl;
    }
    return 0;
}