#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000 * 2 + 10;
int n, top;
long long s, a[MAXN], t[MAXN], Tohka = (long long)1e+18;
double B[MAXN];
pair<long long, long long> b[MAXN], stk[MAXN];
double calc(int id, long long first) {
  return 1.0 / b[id].first * first + B[id];
}
long long Find(long long l, long long r, int a, int b) {
  while (l <= r) {
    long long mid = (l + r) >> 1;
    if (calc(a, mid) + 1e-10 < calc(b, mid))
      l = mid + 1;
    else
      r = mid - 1;
  }
  return r;
}
void Push(int id) {
  for (;
       top >= 1 && stk[top].first >= a[id] &&
       calc(id, stk[top].first) < calc(stk[top].second, stk[top].first) + 1e-10;
       --top)
    ;
  stk[++top].second = id;
  if (top == 1)
    stk[top].first = 0;
  else
    stk[top].first = Find(max(stk[top - 1].first, a[id]), (long long)1e+18,
                          stk[top - 1].second, stk[top].second);
}
int main() {
  cin >> n >> s;
  for (int i = 1; i <= n; ++i) scanf("%I64d%I64d", &b[i].first, &b[i].second);
  sort(b + 1, b + n + 1);
  for (int i = 1; i <= n; ++i) {
    int p = lower_bound(stk + 1, stk + top + 1, make_pair(b[i].second, 0ll)) -
            stk - 1;
    if (stk[p].second) {
      int j = stk[p].second;
      t[i] = (long long)calc(j, b[i].second) + 1;
      if ((t[i] - t[j] - 1) * b[j].first + a[j] >= b[i].second) --t[i];
      int S = j;
      pair<long long, long long> c =
          make_pair(t[i], -((t[i] - t[j]) * b[j].first + a[j]));
      while ((t[i] - t[j]) * b[j].first + a[j] >= stk[p + 1].first && p < top) {
        ++p;
        j = stk[p].second, t[i] = (long long)calc(j, b[i].second) + 1;
        if ((t[i] - t[j] - 1) * b[j].first + a[j] >= b[i].second) --t[i];
        if (c > make_pair(t[i], -((t[i] - t[j]) * b[j].first + a[j])))
          S = j, c = make_pair(t[i], -((t[i] - t[j]) * b[j].first + a[j]));
      }
      t[i] = c.first, j = S;
      a[i] = (t[i] - t[j]) * b[j].first + a[j] - b[i].second;
      B[i] = (double)t[i] - 1.0 / b[i].first * a[i];
      Push(i);
      Tohka = min(Tohka, t[i] + (s - a[i]) / b[i].first +
                             ((s - a[i]) % b[i].first > 0));
    }
    if (b[i].second == 0) {
      Push(i);
      Tohka = min(Tohka, t[i] + (s - a[i]) / b[i].first +
                             ((s - a[i]) % b[i].first > 0));
    }
  }
  cout << Tohka << endl;
  fclose(stdin);
  fclose(stdout);
  return 0;
}
