#include <bits/stdc++.h>
using namespace std;
vector<int> g[101010];
int used[101010];
void dfs(int v) {
  used[v] = 1;
  for (int i = 0; i < g[v].size(); i++) {
    int to = g[v][i];
    if (used[to] == 0) {
      dfs(to);
    }
  }
}
set<int> st;
map<string, int> mpstr;
long long a[101010];
char q, ch[101010];
long long l, r, pref[101010];
long long ans, cnt, sum, max1, min1, ali;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long n, m, k;
  string s;
  cin >> n >> m >> k;
  for (int i = 0; i < n; ++i) cin >> a[i];
  if (k >= m) {
    cout << 0;
    return 0;
  }
  ans = k;
  sort(a, a + n);
  for (int i = n - 1; i >= 0; i--) {
    ans += a[i];
    cnt++;
    ans--;
    if (ans >= m) {
      cout << cnt;
      return 0;
    }
  }
  cout << -1;
}
