#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  if (a % b == 0)
    return b;
  else
    return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
  long long g = gcd(a, b);
  return a * b / g;
}
int N;
long long H;
vector<pair<long long, long long>> P;
long long maxA = 0;
long long minB = 10000000000;
long long ANS = 0;
bool ope1(pair<long long, long long> a, pair<long long, long long> b) {
  return a.second > b.second;
}
int main() {
  cin >> N >> H;
  for (int i = 0; i < N; i++) {
    long long a, b;
    cin >> a >> b;
    maxA = max(maxA, a);
    pair<long long, long long> p = make_pair(a, b);
    P.push_back(p);
  }
  for (int i = 0; i < N; i++) {
    if (P[i].first == maxA) {
      minB = (minB, P[i].second);
    }
  }
  sort(P.begin(), P.end(), ope1);
  int i = 0;
  while (H > 0) {
    if (H <= minB) {
      ANS++;
      break;
    }
    if (P[i].first == maxA && P[i].second == minB) {
      pair<long long, long long> k = make_pair(0, 0);
      P.push_back(k);
      i++;
    }
    if (P[i].second > maxA) {
      H -= P[i].second;
      pair<long long, long long> k = make_pair(0, 0);
      P.push_back(k);
      i++;
      ANS++;
    } else {
      ANS += (H - minB - 1) / maxA + 1;
      H -= maxA * ((H - minB - 1) / maxA + 1);
    }
    if (H <= 0) break;
  }
  cout << ANS;
}
