#include <bits/stdc++.h>
using namespace std;
int n, A;
vector<int> level;
double f(vector<int> &loyal, int p, int k) {
  double x = 0;
  if (p == loyal.size()) {
    for (int mask = 0; mask < (1 << n); mask++) {
      int cnt = 0, B = 0;
      double prob = 1.0;
      for (int i = 0; i < n; i++) {
        if (mask & (1 << i)) {
          prob *= loyal[i] / 100.0;
          cnt++;
        } else {
          prob *= (100 - loyal[i]) / 100.0;
          B += level[i];
        }
      }
      if (2 * cnt > n)
        x += prob;
      else
        x += prob * A / (A + B);
    }
  } else {
    if (k) {
      x = f(loyal, p + 1, k);
      if (loyal[p] < 100) {
        loyal[p] += 10;
        x = max(x, f(loyal, p, k - 1));
        loyal[p] -= 10;
      }
    } else
      x = f(loyal, loyal.size(), k);
  }
  return x;
}
int main() {
  int k;
  while (cin >> n >> k >> A) {
    level = vector<int>(n);
    vector<int> loyal(n);
    for (int i = 0; i < n; i++) cin >> level[i] >> loyal[i];
    printf("%.10lf\n", f(loyal, 0, k));
  }
  return 0;
}
