#include <bits/stdc++.h>
using namespace std;
const int N_ = 200500;
int N;
long long S;
struct cookie {
  long long v, c;
  cookie(long long v = 0, long long c = 0) : v(v), c(c) {}
};
cookie cookies[N_];
struct line {
  long long a, b;
  long long s;
  line(long long a = 0, long long b = 0, long long s = 0) : a(a), b(b), s(s) {}
  long long y() { return a * s + b; }
  long long y(long long x) { return a * x + b; }
};
vector<line> hull;
long long ceilDivision(long long p, long long q) { return (p + q - 1) / q; }
int main() {
  scanf("%d%lld", &N, &S);
  for (int i = 1; i <= N; i++) {
    cookie &p = cookies[i];
    scanf("%lld%lld", &p.v, &p.c);
  }
  sort(cookies + 1, cookies + N + 1, [](const cookie &p, const cookie &q) {
    return p.c != q.c ? p.c < q.c : p.v > q.v;
  });
  cookies[N + 1] = cookie((long long)1e9, S);
  hull.push_back(line(cookies[1].v, 0));
  for (int i = 2; i <= N + 1; i++) {
    cookie &cookie = cookies[i];
    if (hull.back().a >= cookie.v) continue;
    int low = 0, high = (int)hull.size() - 1, pos = (int)hull.size() - 1;
    while (low <= high) {
      int mid = (low + high) >> 1;
      double maxy = hull[mid].y(hull[mid + 1].s - 1);
      if (maxy >= cookie.c)
        high = mid - 1, pos = mid;
      else
        low = mid + 1;
    }
    long long t0 = ceilDivision(cookie.c - hull[pos].b, hull[pos].a);
    if (i == N + 1) return 0 & printf("%lld\n", t0);
    long long y0 = hull[pos].y(t0) - cookie.c;
    line newLine = line(cookie.v, y0 - cookie.v * t0);
    while (!hull.empty() && hull.back().s >= t0 &&
           hull.back().y() <= newLine.y(hull.back().s))
      hull.pop_back();
    if (hull.back().a < newLine.a) {
      newLine.s =
          ceilDivision(hull.back().b - newLine.b, newLine.a - hull.back().a);
      hull.push_back(newLine);
    }
  }
  return 0;
}
