#include<bits/stdc++.h>
using namespace std;
int n,k;
//题目要求选择合适的d
int h[100010],w[100010];
bool check(int d){
int num=0;
//看是否够分
for(int i=0;i<n;i++)
num+=(h[i]/d)*(w[i]/d);
if(num>=k)//够分 d可以再大 这个d也有可能
return true;
else //不够分 d需要小 这个d不可能
return false;
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++) cin>>h[i]>>w[i];
int L=1,R=100010;//d的最小是1 d的最大是100010
while(L<R){
//求最大值向上取整
int mid = (L+R+1)/2;
//cout<<mid;
if(check(mid)) L=mid;
else R=mid-1;
}
cout<<L;
return 0;
}