#include<bits/stdc++.h>
using namespace std;
struct Minister {
int a;
int b;
};
bool compare(const Minister &m1, const Minister &m2) {
return (long long)m1.a * m1.b < (long long)m2.a * m2.b;
}
vector<int> multiply(const vector<int> &num, int x) {
vector<int> res;
int carry = 0;
for (int i = 0; i < num.size() || carry > 0; ++i) {
long long product = carry;
if (i < num.size()) {
product += (long long)num[i] * x;
}
res.push_back(product % 10);
carry = product / 10;
}
while (res.size() > 1 && res.back() == 0) {
res.pop_back();
}
return res;
}
long long divide(const vector<int> &num, int y) {
long long quotient = 0;
int remainder = 0;
for (int i = num.size() - 1; i >= 0; --i) {
long long current = remainder * 10LL + num[i];
quotient = quotient * 10 + current / y;
remainder = current % y;
}
return quotient;
}
int main() {
int n;
cin >> n;
int king_a, king_b;
cin >> king_a >> king_b;
vector<Minister> ministers(n);
for (int i = 0; i < n; ++i) {
cin >> ministers[i].a >> ministers[i].b;
}
sort(ministers.begin(), ministers.end(), compare);
vector<int> product;
int temp = king_a;
if (temp == 0) {
product.push_back(0);
} else {
while (temp > 0) {
product.push_back(temp % 10);
temp /= 10;
}
}
long long max_reward = 0;
for (int i = 0; i < n; ++i) {
long long reward = divide(product, ministers[i].b);
if (reward > max_reward) {
max_reward = reward;
}
product = multiply(product, ministers[i].a);
}
cout << max_reward << endl;
return 0;
}