using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
using System.Text;

public class Program
{

    public void Proc()
    {
        long[] inpt = Reader.ReadLine().Split(' ').Select(a => long.Parse(a)).ToArray();
        int katanaCount = (int)inpt[0];
        this.HP = inpt[1];
        this.KatanaList = new List<Katana>();
        for (int i = 0; i < katanaCount; i++) {
            inpt = Reader.ReadLine().Split(' ').Select(a => long.Parse(a)).ToArray();
            Katana k = new Katana(i, inpt[0], inpt[1]);
            if(Tuyoi == null) {
                Tuyoi = k;
            } else if(Tuyoi.Furu<k.Furu) {
                Tuyoi = k;
            } else if(Tuyoi.Furu==k.Furu&&Tuyoi.Nageru>k.Nageru) {
                Tuyoi = k;
            }
            KatanaList.Add(k);
        }
        KatanaList.RemoveAt(Tuyoi.ID);
        List<Katana> ktn = KatanaList.OrderByDescending(a=>a.Nageru).ToList();
        int lastIndex = 0;
        int cnt = 0;
        for (int i = 0; i < ktn.Count; i++) {
            if(ktn[i].Nageru<Tuyoi.Furu) {
                break;
            }
            cnt++;
            HP -= ktn[i].Nageru;
            if(HP<=Tuyoi.Nageru) {
                if(HP>0) {
                    cnt++;
                }
                Console.WriteLine(cnt);
                return;
            }
            if(HP<=0) {
                Console.WriteLine(cnt);
                return;
            }

            lastIndex = i;
        }
        int subCnt = 0;
        long max = HP / Tuyoi.Furu;
        if(HP%Tuyoi.Furu!=0) {
            max++;
        }
        for (int i = lastIndex+1; i<ktn.Count&&i < max&&HP>Tuyoi.Nageru&&ktn[i].Nageru>Tuyoi.Furu; i++) {
            subCnt++;
            HP -= ktn[i].Nageru;
            lastIndex = i;
        }
        if(HP>0) {
            int tmp = 1;
            HP -= Tuyoi.Nageru;
            if(HP>0) {
                tmp += (int)(HP / Tuyoi.Furu);
                if(HP%Tuyoi.Furu>0) {
                    tmp++;
                }
            }
            subCnt += tmp;
        }
        int ans = cnt + subCnt;
        ans = Math.Min(ans, cnt + (int)max);
        Console.WriteLine(ans);

    }



    private long HP;

    private List<Katana> KatanaList;
    private Katana Tuyoi;

    private class Katana {
        public long Furu;
        public long Nageru;
        public bool CanUse = true;
        public int ID;
        public Katana(int id, long furu, long nageru) {
            this.ID = id;
            this.Furu = furu;
            this.Nageru = nageru;
        }
    }

    public class Reader
    {
        private static StringReader sr;
        public static bool IsDebug = false;
        public static string ReadLine()
        {
            if (IsDebug)
            {
                if (sr == null)
                {
                    sr = new StringReader(InputText.Trim());
                }
                return sr.ReadLine();
            }
            else
            {
                return Console.ReadLine();
            }
        }
        private static string InputText = @"



5 500
35 44
28 83
46 62
31 79
40 43


";
    }

    public static void Main(string[] args)
    {
#if DEBUG
        Reader.IsDebug = true;
#endif
        Program prg = new Program();
        prg.Proc();
    }
}


Measured memory_bytes: 26936