#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
using Graph = vector<vector<int>>;
int main() {
  long long n, h, ans = 0, k;
  cin >> n >> h;
  vector<pair<long long, long long>> p(n);
  vector<long long> q(n);
  for (int i = 0; i < n; i++) {
    long long a, b;
    cin >> a >> b;
    p[i] = make_pair(b, a);
  }
  sort(p.begin(), p.end());
  for (int i = 0; i < n; i++) q[i] = p[i].second;
  k = n - 1;
  while (h > 0) {
    if (k == 0) {
      while (h > p[k].first) {
        h -= p[k].second;
        ans++;
      }
      ans++;
      h -= p[k].first;
    } else {
      if (p[k].second < p[k - 1].first) {
        long long t = lower_bound(q.begin(), q.end(), p[k].second) - q.begin();
        if (t != k) {
          h -= p[k].first;
          ans++;
          k--;
        } else {
          while (h > p[k].first + p[k - 1].first) {
            h -= p[k].second;
            ans++;
          }
          ans += 2;
          h -= p[k].first + p[k - 1].first;
        }
      } else {
        while (h > p[k].first) {
          h -= p[k].second;
          ans++;
        }
        ans++;
        h -= p[k].first;
      }
    }
  }
  cout << ans;
}
