import std.algorithm, std.array, std.conv, std.stdio, std.string;

auto solve(int h, int[] _as, int[] _bs)
{
    auto a = _as.reduce!max;
    size_t answer;
    foreach (b; _bs.sort!((x, y) => x > y).filter!(b => a < b))
    {
        if (h < 0)
            return answer;
        h -= b;
        answer += 1;
    }
    if (h < 0)
        return answer;
    return answer + h.divceil(a);
}

void main()
{
    auto cond = readln.chomp.split.map!(to!int);
    immutable n = cond[0], h = cond[1];
    int[] a, b;
    foreach (i; 0..n)
    {
        auto buf = readln.chomp.split.map!(to!int);
        a ~= buf[0];
        b ~= buf[1];
    }
    solve(h, a, b).writeln;
}

auto divceil(int numerator, int denominator)
{
    return numerator / denominator + !!(numerator % denominator);
}
