#include <bits/stdc++.h>
using namespace std;
int power(int a, int b, int c, int ans = 1) {
  for (; b; b >>= 1, a = (long long)a * a % c)
    if (b & 1) ans = (long long)ans * a % c;
  return ans;
}
pair<long long, long long> p[201010];
long long calc_time(long long cur, long long c, int v, long long s) {
  if (s <= c) return cur + 1;
  return cur + (s - c + v - 1) / v;
}
long long t[201010], c[201010];
int q[201010];
bool can1(int u, int v, int cc) {
  long long t1 = calc_time(t[u], c[u], p[u].second, cc);
  long long t2 = calc_time(t[v], c[v], p[v].second, cc);
  if (t1 != t2) return t2 < t1;
  return c[u] + (t1 - t[u]) * p[u].second <= c[v] + (t2 - t[v]) * p[v].second;
}
long long operator^(const pair<long long, long long> &a,
                    const pair<long long, long long> &b) {
  return a.first * b.second - a.second * b.first;
}
pair<long long, long long> operator-(const pair<long long, long long> &a,
                                     const pair<long long, long long> &b) {
  return make_pair(a.first - b.first, a.second - b.second);
}
bool can2(int u, int v, int k) {
  pair<long long, long long> A = make_pair(t[u], c[u]),
                             B = make_pair(1, p[u].second);
  pair<long long, long long> C = make_pair(t[v], c[v]),
                             D = make_pair(1, p[v].second);
  pair<long long, long long> E = make_pair(t[k], c[k]),
                             F = make_pair(1, p[k].second);
  long long t1 = B ^ (A - C), t2 = B ^ D, t3 = D ^ (C - E), t4 = D ^ F;
  return (C.first * t2 + D.first * t1) * t4 >=
         (E.first * t4 + F.first * t3) * t2;
}
int main() {
  int n;
  long long s;
  cin >> n >> s;
  for (int i = 0; i < n; i++)
    scanf("%d%d", &p[i].second, &p[i].first), p[i].second = -p[i].second;
  sort(p, p + n);
  int st = 0, ed = 0;
  int pre = 0;
  p[0].second = -p[0].second;
  long long ans = calc_time(t[0], c[0], p[0].second, s);
  for (int i = 1; i < n; i++) {
    p[i].second = -p[i].second;
    if (p[i].second <= pre) continue;
    pre = p[i].second;
    int cc = p[i].first;
    while (ed > st && can1(q[st], q[st + 1], cc)) st++;
    int u = q[st];
    t[i] = calc_time(t[u], c[u], p[u].second, cc);
    c[i] = c[u] - cc + (t[i] - t[u]) * p[u].second;
    ans = min(ans, calc_time(t[i], c[i], p[i].second, s));
    while (ed > st && can2(q[ed - 1], q[ed], i)) ed--;
    q[++ed] = i;
  }
  cout << ans << endl;
  return 0;
}
