#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;
}