#include <bits/stdc++.h>
using namespace std;
int n, h;
int w[100010], t[100010];
bool thrown[100010];
map<int, int> dp;
int search(int health) {
  if (health <= 0) {
    dp[health] = 0;
  } else if (dp.count(health) == 0) {
    int ans = 2000000000;
    for (int i = 0; i < n; i++) {
      ans = min(ans, 1 + search(health - w[i]));
    }
    for (int i = 0; i < n; i++) {
      if (!thrown[i]) {
        thrown[i] = true;
        ans = min(ans, 1 + search(health - t[i]));
        thrown[i] = false;
      }
    }
    dp[health] = ans;
  }
  return dp[health];
}
int main() {
  cin >> n >> h;
  memset(thrown, 0, 100010);
  for (int i = 0; i < n; i++) {
    cin >> w[i] >> t[i];
  }
  int sum_throw = 0;
  for (int i = 0; i < n; i++) {
    sum_throw += t[i];
    if (sum_throw >= h) {
      cout << i + 1 << endl;
      return 0;
    }
  }
  h -= sum_throw;
  int max_wield = 0;
  int ans = 0;
  for (int i = 0; i < n; i++) {
    max_wield = max(max_wield, w[i]);
  }
  if (h % max_wield != 0) {
    ans = 1;
  }
  ans = ans + h / max_wield + n;
  cout << ans << endl;
  return 0;
}
