#include <bits/stdc++.h>
using namespace std;
long long a, b, c, d, e, f, g, h, i, j, k;
pair<long long, long long> H[300005];
long long F[300005], G[300005];
long long tar, last, an;
long long que[300005], l, r;
bool cmp(pair<long long, long long> x, pair<long long, long long> y) {
  return x.second < y.second;
}
long long Div(long long x, long long y) { return x / y + (x % y != 0); }
pair<long long, long long> Make(long long x, long long y) {
  pair<long long, long long> R;
  R.first = F[x] + Div(max(y - G[x], 0LL), H[x].first);
  R.second = G[x] + H[x].first * (R.first - F[x]) - y;
  return R;
}
long long Find(long long x, long long y) {
  long long low, high, mid;
  long long R = 10000000000000009LL;
  low = 0LL;
  high = 10000000000000009LL;
  while (low <= high) {
    mid = (low + high) >> 1;
    pair<long long, long long> t1 = Make(x, mid), t2 = Make(y, mid);
    if (t2.first < t1.first ||
        (t2.first == t1.first && t2.second > t1.second)) {
      R = min(R, mid);
      high = mid - 1;
    } else
      low = mid + 1;
  }
  return R;
}
int main() {
  cin >> a >> tar;
  for (i = 1; i <= a; i++) cin >> H[i].first >> H[i].second;
  sort(H + 1, H + a + 1, cmp);
  l = 1;
  que[++r] = 1;
  F[1] = G[1] = 0;
  last = H[1].first;
  an = Div(tar, H[1].first);
  for (i = 2; i <= a; i++) {
    if (H[i].first <= last) continue;
    while (l < r) {
      pair<long long, long long> t1 = Make(que[l], H[i].second),
                                 t2 = Make(que[l + 1], H[i].second);
      if (t2.first < t1.first ||
          (t2.first == t1.first && t2.second >= t1.second))
        l++;
      else
        break;
    }
    pair<long long, long long> tt = Make(que[l], H[i].second);
    F[i] = tt.first;
    G[i] = tt.second;
    while (r > l) {
      long long yy = Find(que[r - 1], que[r]);
      pair<long long, long long> t1 = Make(i, yy), t2 = Make(que[r], yy);
      if (t1.first < t2.first ||
          (t1.first == t2.first && t1.second >= t2.second))
        r--;
      else
        break;
    }
    que[++r] = i;
    last = H[i].first;
    an = min(an, F[i] + Div(max(tar - G[i], 0LL), H[i].first));
  }
  cout << an << endl;
  return 0;
}
