#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
using namespace std;
namespace SimplexMethod {
const long double EPS = 1.0E-12;
vector<vector<long double>> a;
vector<long double> b, c, res;
vector<int> N, kt;
int m;
void pivot(int k, int s, int e) {
  int first = kt[s];
  long double p = a[s][e];
  for (int _n((k)-1), i(0); i <= _n; i++) a[s][i] /= p;
  b[s] /= p;
  N[e] = false;
  for (int _n((m)-1), i(0); i <= _n; i++)
    if (i != s) {
      b[i] -= a[i][e] * b[s];
      a[i][first] = -a[i][e] * a[s][first];
    }
  for (int _n((k)-1), j(0); j <= _n; j++)
    if (N[j]) {
      c[j] -= c[e] * a[s][j];
      for (int _n((m)-1), i(0); i <= _n; i++)
        if (i != s) a[i][j] -= a[i][e] * a[s][j];
    }
  kt[s] = e;
  N[first] = true;
  c[first] = -c[e] * a[s][first];
}
vector<long double> doit(int k) {
  vector<long double> res;
  while (true) {
    int e = -1, s = -1;
    for (int _n((k)-1), i(0); i <= _n; i++)
      if (N[i] && c[i] > EPS) {
        e = i;
        break;
      }
    if (e == -1) break;
    for (int _n((m)-1), i(0); i <= _n; i++)
      if (a[i][e] > EPS && (s == -1 || b[i] / a[i][e] < b[s] / a[s][e])) s = i;
    if (s == -1) return vector<long double>();
    pivot(k, s, e);
  }
  res.resize(k, 0);
  for (int _n((m)-1), i(0); i <= _n; i++) res[kt[i]] = b[i];
  return res;
}
void apply_rand(vector<long double>& a, const vector<int>& ind) {
  for (int _n(((int)((a).size())) - 1), i(0); i <= _n; i++) {
    if (i < ind[i]) {
      swap(a[i], a[ind[i]]);
    }
  }
}
long double simplex(vector<vector<long double>> _A, vector<long double> _b,
                    vector<long double> _c) {
  vector<int> ind((int)((_A[0]).size()));
  for (int _n(((int)((ind).size())) - 1), i(0); i <= _n; i++) {
    ind[i] = i;
  }
  srand(std::chrono::duration_cast<std::chrono::nanoseconds>(
            (std::chrono::high_resolution_clock::now().time_since_epoch()))
            .count() +
        time(0));
  auto rgen = [](int n) -> unsigned {
    return ((unsigned)(rand() << 15) + (unsigned)rand()) % n;
  };
  random_shuffle(ind.begin(), ind.end(), rgen);
  for (int _n(((int)((_A).size())) - 1), i(0); i <= _n; i++) {
    apply_rand(_A[i], ind);
  }
  apply_rand(_c, ind);
  a = _A;
  b = _b;
  c = _c;
  m = (int)((a).size());
  int n = (int)((a[0]).size());
  int k = n + m + 1;
  c.resize(n + m);
  kt.resize(m);
  N = vector<int>(k, true);
  for (int _n((m)-1), i(0); i <= _n; i++) {
    a[i].resize(k);
    a[i][n + i] = 1;
    a[i][k - 1] = -1;
    kt[i] = n + i;
    N[kt[i]] = false;
  }
  int s = min_element((b).begin(), (b).end()) - b.begin();
  if (b[s] < -EPS) {
    c = vector<long double>(k, 0);
    c[k - 1] = -1;
    pivot(k, s, k - 1);
    res = doit(k);
    if (res[k - 1] > EPS) return -1e100;
    for (int _n((m)-1), i(0); i <= _n; i++)
      if (kt[i] == k - 1)
        for (int _n((k - 1) - 1), j(0); j <= _n; j++)
          if (N[j] && (a[i][j] < -EPS || EPS < a[i][j])) {
            pivot(k, i, j);
            break;
          }
    c = _c;
    c.resize(k, 0);
    for (int _n((m)-1), i(0); i <= _n; i++)
      for (int _n((k)-1), j(0); j <= _n; j++)
        if (N[j]) c[j] -= c[kt[i]] * a[i][j];
  }
  res = doit(k - 1);
  if (!res.empty()) res.resize(n);
  long double ans = 0.0;
  for (int _n(((int)((res).size())) - 1), i(0); i <= _n; i++) {
    ans += res[i] * _c[i];
  }
  return ans;
}
}  // namespace SimplexMethod
int d, n, m, k, p, q;
int main() {
  scanf("%d%d%d", &n, &p, &q);
  vector<long double> a, b, c;
  a.resize(n);
  b.resize(n);
  c.resize(n);
  vector<pair<int, int>> tp;
  for (int _n((n)-1), i(0); i <= _n; i++) {
    int first, second;
    scanf("%d%d", &first, &second);
    tp.push_back(make_pair(first, second));
  }
  for (int _n((n)-1), i(0); i <= _n; i++) {
    int first = tp[i].first, second = tp[i].second;
    a[i] = -first;
    b[i] = -second;
    c[i] = -1.0;
  }
  vector<vector<long double>> A;
  A.push_back(a);
  A.push_back(b);
  vector<long double> B;
  B.push_back(-p);
  B.push_back(-q);
  auto res = -SimplexMethod::simplex(A, B, c);
  printf("%.12lf\n", (double)res);
}
