#include<bits/stdc++.h>
#define x first
#define y second
#define endl "\n"
#define MAX INT_MAX
#define LMAX LLONG_MAX
#define ll long long
#define pii pair<int,int>
#define pdd pair<double,double>
#define ull unsigned long long
#ifndef ONLINE_JUDGE
#define debug(...) [](auto... a) { ((cout << a << ' '), ...) << endl; }(#__VA_ARGS__, ":", __VA_ARGS__)
#define debugv(v) \
do { \
cout << #v << " : {"; \
for (int qiuyu = 0; qiuyu < v.size(); ++qiuyu) { \
cout << v[qiuyu]; \
if (qiuyu + 1 != v.size()) \
cout << ","; \
} \
cout << "}" << endl; \
} while (0)
#else
#define debug(...)
#define debugv(v)
#endif
using namespace std;
template < const int M = 1000000000 + 7 >
struct MInt {
using LL = long long;
int x;
MInt(int x = 0) : x(norm(x)) {}
MInt(LL x) : x(norm(x % M)) {}
inline int norm(LL x) const {
if (x < 0) x += M;
if (x >= M) x -= M;
return x;
}
inline MInt ksm(MInt x, LL y) const {
return x ^= y;
}
inline int val() const {
return x;
}
inline MInt operator - () const {
return MInt(norm(M - x));
}
inline MInt inv() const {
assert(x != 0 );
return *this ^ (M - 2);
}
inline MInt& operator *= (const MInt& rhs) {
x = LL(x) * rhs.x % M;
return *this;
}
inline MInt& operator += (const MInt& rhs) {
x = norm(x + rhs.x);
return *this;
}
inline MInt& operator -= (const MInt& rhs) {
x = norm(x - rhs.x);
return *this;
}
inline MInt& operator /= (const MInt& rhs) {
return *this *= rhs.inv();
}
inline MInt& operator ^= (LL y) {
LL ans = 1;
while (y) {
if (y & 1) ans = ans * x % M;
x = LL(x) * x % M;
y >>= 1;
}
x = ans;
return *this;
}
inline friend MInt operator * (const MInt& lhs, const MInt& rhs) {
MInt res = lhs;
res *= rhs;
return res;
}
inline friend MInt operator + (const MInt& lhs, const MInt& rhs) {
MInt res = lhs;
res += rhs;
return res;
}
inline friend MInt operator - (const MInt& lhs, const MInt& rhs) {
MInt res = lhs;
res -= rhs;
return res;
}
inline friend MInt operator / (const MInt& lhs, const MInt& rhs) {
MInt res = lhs;
res /= rhs;
return res;
}
inline friend MInt operator ^ (const MInt& lhs, LL y) {
MInt res = lhs;
res ^= y;
return res;
}
inline friend istream& operator >> (istream& is, MInt& a) {
LL v;
is >> v;
a = MInt(v);
return is;
}
inline friend ostream& operator << (ostream& os, const MInt& a) {
return os << a.val();
}
};
using Z = MInt<>;
struct SafeProd {
int zero = 0;
Z prod = 1;
void mul(const Z& x) {
if (x.val() == 0) zero++;
else prod *= x;
}
void div(const Z& x) {
if (x.val() == 0) zero--;
else prod /= x;
}
Z val() const {
return zero ? Z(0) : prod;
}
};
//正难则反
//注意题意中的隐含关系
//const int N=
#define int long long
const ll mod = 1000000007;
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
int a0,b0;
cin>>a0>>b0;
vector<pii>mp(n+1);
for(int i=1;i<=n;i++){
auto &[l,r]=mp[i];
cin>>l>>r;
a0*=l;
}
int ans=LMAX;
for(int i=1;i<=n;i++){
auto [l,r]=mp[i];
int t=a0/(l*r);
ans=min(ans,t);
}
cout<<ans<<endl;
return 0;
}