#include <bits/stdc++.h>
using namespace std;
vector<pair<unsigned long long, unsigned long long> > kat;
bool comp(pair<unsigned long long, unsigned long long> a,
          pair<unsigned long long, unsigned long long> b) {
  if (a.first < b.first) return false;
  if (a.first > b.first) return true;
  if (a.second < b.first) return true;
  return false;
}
int main() {
  int H, N;
  cin >> N >> H;
  for (int i = 0; i < N; ++i) {
    int x, y;
    cin >> x >> y;
    kat.push_back(make_pair(x, y));
  }
  sort(kat.begin(), kat.end(), comp);
  vector<unsigned long long> secondary;
  for (int i = 1; i < N; ++i) {
    if (kat[i].second > kat[0].first) secondary.push_back(kat[i].second);
  }
  unsigned long long cnt = 0;
  for (int i = 0; i < secondary.size(); ++i) {
    cnt++;
    if (H <= secondary[i]) break;
    H -= secondary[i];
  }
  if (H > 0) {
    if (kat[0].second > kat[0].first) {
      if (kat[0].second >= H) {
        cnt++;
      } else {
        cnt += (H - kat[0].second + kat[0].first - 1) / kat[0].first + 1;
      }
    } else {
      cnt += (H + kat[0].first - 1) / kat[0].first;
    }
  }
  cout << cnt << endl;
}
