#include<iostream>
#include<string>
#include<algorithm>
#include<set> 
#define LL long long 
using namespace std;

struct node
{
	int a,b,t;
}a[100005];
bool cmp(node a,node b)
{
	return a.b>b.b;
}
int main()
{
	int n,h;
	cin>>n>>h;
	int maxa=-1;
	int maxb=-1;
	int in=1;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].a>>a[i].b;
		a[i].t=i;
		if(a[i].a>maxa)
		{
			in=i;
			maxa=a[i].a;
			maxb=a[i].b;
		}	
	}
	int ans=0;
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++)
	{	
	
//		if(a[i].a<a[i+1].b&&a[i].a!=maxa){
//			ans++;
//			h-=a[i].b;
//		}
		
		if(a[i].t!=in&&a[i].b>=maxa)
		{
			h-=a[i].b;
			ans++;
			if(h<=0)
				break;
			else
			{
				if(maxb>a[i].b&&h-(maxb-a[i].b)<=0)
					h=-1,break;
			}
		}
		if(a[i].b<maxa)
			break;
	}
	if(h<=0)
		cout<<ans;
	else
	{
		if(h<=maxb)
			cout<<ans+1;
		else
			cout<<(ans+1+(h-maxb+maxa-1)/maxa);
	}
} 