#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using vi = vector<int>;
const int mod = 1e9 + 7;
const long double pi = 3.141592653589793238462643383279502884197;
const long double eps = 1e-7;
int N, H;
ll num = 0;
vector<pii> ab;
bool bFinish = false;
int main() {
  cin >> N >> H;
  for (int i = (0); i < (N); i++) {
    int a, b;
    cin >> a >> b;
    ab.push_back(pii(a, b));
  }
  sort(ab.begin(), ab.end(),
       [](const pii x, const pii y) { return x.second > y.second; });
  pii max_ab = *max_element(ab.begin(), ab.end(), [](const pii x, const pii y) {
    if (x.first == y.first) {
      return x.second > y.second;
    } else {
      return x.first < y.first;
    }
  });
  for (int i = (0); i < (ab.size()); i++) {
    if (max_ab.first <= ab[i].second) {
      if (max_ab == ab[i]) {
        int n = 0;
        while (max_ab == ab[i]) {
          i++;
          n++;
        }
        if (H > max_ab.second * (n - 1)) {
          H -= max_ab.second * (n - 1);
          num += (n - 1);
          break;
        } else {
          int d = H / max_ab.second;
          H -= max_ab.second * d;
          num += d;
          break;
        }
        if (H <= max_ab.second) {
          H -= max_ab.second;
          num++;
        }
        break;
      } else {
        H -= ab[i].second;
        num++;
      }
    } else {
      break;
    }
  }
  if (H > 0) {
    H -= max_ab.second;
    num++;
    if (H > 0) {
      int n = H / max_ab.first;
      if (n == 0)
        num += 1;
      else {
        H -= max_ab.first * n;
        if (H > 0)
          num += n + 1;
        else
          num += n;
      }
    }
  }
  cout << num << endl;
  return 0;
}
