#include <bits/stdc++.h>
const int MOD = 1000000007, INF = 1111111111;
using namespace std;
using lint = long long;
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &vec) {
  for (int i = 0; i < vec.size(); i++) {
    os << vec[i] << (i + 1 == vec.size() ? "" : " ");
  }
  return os;
}
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  int N, H;
  cin >> N >> H;
  vector<int> a(N), b(N);
  for (int i = 0; i < N; i++) cin >> a[i] >> b[i];
  sort(a.begin(), a.end());
  ((void)0);
  sort(b.begin(), b.end());
  ((void)0);
  int sum = 0;
  auto x = upper_bound(b.begin(), b.end(), a.back());
  ((void)0);
  ((void)0);
  for (auto itr = x; itr != b.end(); itr++) {
    sum += *itr;
    ((void)0);
    if (sum >= H) {
      cout << itr - x + 1 << "\n";
      return 0;
    }
  }
  H -= sum;
  cout << (b.end() - x) + (H - 1) / a.back() + 1 << "\n";
  return 0;
}
