#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using Edge = pair<ll, ll>;
using Graph = vector<vector<Edge>>;
struct aaa {
  aaa() {
    cin.tie(0);
    ios::sync_with_stdio(0);
    cout << fixed << setprecision(20);
  };
} aaaaaaa;
int MOD = 1e9 + 7;
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) { return (a * b) / gcd(a, b); }
ll devc(ll x, ll y) { return 1 + (x - 1) / y; }
ll solve(ll N, ll H, vector<ll> A, vector<ll> B) {
  ll mx = max_element((A).begin(), (A).end()) - A.begin();
  ll ans = 0;
  if (H <= B[mx]) return 1;
  for (ll i = 0; i < (N); ++i)
    if (i != mx)
      if (B[i] > A[mx]) {
        H -= B[i];
        ans++;
        if (H <= 0) return ans;
      }
  if (B[mx] > A[mx] && H > 0) H -= B[mx], ans++;
  if (H > 0) ans += devc(H, A[mx]);
  return ans;
}
int main() {
  ll N, H;
  cin >> N >> H;
  vector<ll> A(N), B(N);
  for (ll i = 0; i < (N); ++i) cin >> A[i] >> B[i];
  cout << (solve(N, H, A, B)) << '\n';
  return 0;
}
