#include <bits/stdc++.h>
#pragma warning(disable : 4786)
using namespace std;
vector<vector<int> > candies;
vector<int> test;
int k, n;
void count(int step, int cnt) {
  if (step == n - 1) {
    test[step] = cnt;
    candies.push_back(test);
    return;
  }
  for (int i = 0; i <= cnt; ++i) {
    test[step] = i;
    count(step + 1, cnt - i);
  }
}
int level[10];
int loyal[10];
int newl[10];
int main() {
  int A;
  cin >> n >> k >> A;
  test.assign(n, 0);
  vector<pair<int, int> > v;
  for (int i = 0; i < n; ++i) {
    cin >> level[i] >> loyal[i];
  }
  count(0, k);
  double best = 0;
  for (int c = 0; c < candies.size(); ++c) {
    for (int i = 0; i < n; ++i)
      newl[i] = min(100, loyal[i] + 10 * candies[c][i]);
    double sump = 0;
    for (int mask = 0; mask < (1 << n); ++mask) {
      double localp = 1;
      int cnt = 0;
      int nsum = 0;
      for (int i = 0; i < n; ++i) {
        if (mask & (1 << i)) {
          localp *= newl[i] / 100.0;
          ++cnt;
        } else {
          localp *= (100 - newl[i]) / 100.0;
          nsum += level[i];
        }
      }
      if (cnt * 2 > n) {
        sump += localp;
      } else {
        sump += localp * (A / (double)(A + nsum));
      }
    }
    best = max(best, sump);
  }
  cout << setprecision(10) << fixed << best << endl;
  return 0;
}
