#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<long, long>;
void solve(long N, long H, vector<long> a, vector<long> b) {
  unordered_map<long, long> A;
  vector<P> B(N);
  for (long i = 0; i < N; ++i) {
    A[i] = a[i];
    B[i] = P(b[i], i);
  }
  sort(B.rbegin(), B.rend());
  auto max_a_itr = max_element(a.cbegin(), a.cend());
  long max_a_ix = max_a_itr - a.cbegin();
  long max_a = *max_a_itr;
  long max_b = B.front().first;
  if (max_a >= max_b) {
    cout << ceil(1.0 * H / max_a) << endl;
    return;
  }
  long count(0);
  while (H > 0) {
    max_b = B.front().first;
    long max_b_ix = B.front().second;
    if (max_b > max_a && A[max_b_ix] <= max_a && max_b_ix != max_a_ix) {
      H -= max_b;
      B.erase(B.begin());
      count++;
      continue;
    }
    if (max_b > max_a) {
      H -= max_b;
      count++;
    }
    count += ceil(1.0 * H / max_a);
    break;
  }
  cout << count << endl;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  long N, H;
  cin >> N >> H;
  vector<long> a(N);
  vector<long> b(N);
  for (long i = 0; i < N; ++i) cin >> a[i] >> b[i];
  solve(N, H, move(a), move(b));
  return 0;
}
