#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int n, h;
  cin >> n >> h;
  long long int a[n], b[n];
  for (long long int i = 0; i < n; i++) {
    cin >> a[i] >> b[i];
  };
  long long int a_max = 0;
  long long int a_max_b = LLONG_MAX;
  long long int a_max_i;
  for (long long int i = 0; i < n; i++) {
    if (a_max < a[i] || (a_max == a[i] && a_max_b > b[i])) {
      a_max = max(a_max, a[i]);
      a_max_b = b[i];
      a_max_i = i;
    }
  }
  priority_queue<long long int> que;
  priority_queue<long long int> que2;
  for (long long int i = 0; i < n; i++) {
    if (i == a_max_i)
      continue;
    else if (a_max < b[i]) {
      que.push(b[i]);
      que2.push(b[i]);
    }
  }
  long long int ans = 0;
  long long int damage = 0;
  while (!que.empty()) {
    long long int x = que.top();
    que.pop();
    damage += x;
    ans++;
    if (damage >= h) break;
  }
  while (damage < h) {
    damage += a_max;
    ans++;
  }
  damage += a_max_b;
  ans++;
  while (!que2.empty()) {
    long long int x = que2.top();
    que2.pop();
    damage -= x;
    ans--;
    if (damage < h) break;
  }
  while (damage >= h) {
    damage -= a_max;
    ans--;
  }
  cout << ans + 1 << endl;
}
