#include <bits/stdc++.h>
using namespace std;
vector<int> socket;
int n, m, k;
int ans = 0;
int getMin(int k, int idx = 0) {
  if (k >= m) return ans;
  if (idx == n) return -1;
  k += socket[idx] * -1 - 1;
  ans++;
  return getMin(k, idx + 1);
}
int main() {
  cin >> n >> m >> k;
  socket = vector<int>(n);
  for (int(i) = 0; (i) < (n); (i)++) {
    cin >> socket[i];
    socket[i] *= -1;
  }
  sort(socket.begin(), socket.end());
  cout << getMin(k) << endl;
  return 0;
}
