#include <bits/stdc++.h>
int diri[] = {-1, 0, 1, 0, -1, 1, 1, -1};
int dirj[] = {0, 1, 0, -1, 1, 1, -1, -1};
int compare(double d1, double d2) {
  if (fabs(d1 - d2) < 1e-9) return 0;
  if (d1 < d2) return -1;
  return 1;
}
using namespace std;
int lv[11];
int pi[11];
int n, m, l;
double best = 0;
int cur[11];
void bt(int ind, int rem) {
  if (rem == 0) {
    double sum = 0;
    for (int mask = 0; mask < (int)(1 << n); mask++) {
      double b = 0, p_mask = 1;
      for (int i = 0; i < (int)n; i++) {
        double d = (cur[i] / 100.0);
        if (mask & (1 << i))
          p_mask *= d;
        else
          p_mask *= (1 - d), b += lv[i];
      }
      if (__builtin_popcount(mask) <= n / 2) p_mask *= (l / (l + b));
      sum += p_mask;
    }
    best = max(best, sum);
    return;
  }
  if (ind >= n) return;
  for (int i = 0; i < (int)rem + 1; i++) {
    cur[ind] = min(pi[ind] + i * 10, 100);
    bt(ind + 1, rem - i);
    cur[ind] = pi[ind];
  }
}
int main() {
  cin >> n >> m >> l;
  for (int i = 0; i < (int)n; i++) cin >> lv[i] >> pi[i];
  bt(0, m);
  printf("%.7lf", best);
  return 0;
}
