#include <bits/stdc++.h>
using namespace std;
int n, A;
vector<int> level, loyal;
double maxP;
void backtrack(int p, int k) {
  if (p == loyal.size() || k == 0) {
    double x = 0;
    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);
    }
    maxP = max(maxP, x);
  } else {
    backtrack(p + 1, k);
    if (loyal[p] < 100) {
      loyal[p] += 10;
      backtrack(p, k - 1);
      loyal[p] -= 10;
    }
  }
}
int main() {
  int k;
  while (cin >> n >> k >> A) {
    level = vector<int>(n);
    loyal = vector<int>(n);
    for (int i = 0; i < n; i++) cin >> level[i] >> loyal[i];
    maxP = 0;
    backtrack(0, k);
    printf("%.10lf\n", maxP);
  }
  return 0;
}
