#include <bits/stdc++.h>
double max(double x, double y) { return x > y ? x : y; }
double ans;
double func(int* level, int* loyality, int n, int A) {
  double res = 0;
  for (int i = (0); i < (1 << n); ++i) {
    double p1 = 1, p2 = 1;
    int B = 0;
    int cnt = 0;
    for (int j = (0); j < (n); ++j) {
      if (i & (1 << j)) {
        p1 *= 0.01 * loyality[j];
        cnt++;
      } else {
        p1 *= (1 - 0.01 * loyality[j]);
        B += level[j];
      }
    }
    if (2 * cnt > n)
      res += p1;
    else
      res += p1 * A / (A + B);
  }
  return res;
}
void perm(int* level, int* loyality, int A, int n, int i, int j) {
  if (i == n) {
    ans = max(ans, func(level, loyality, n, A));
    return;
  }
  for (int k = (0); k < (j + 1); ++k) {
    int t = loyality[i];
    loyality[i] += 10 * k;
    if (loyality[i] > 100) loyality[i] = 100;
    perm(level, loyality, A, n, i + 1, j - k);
    loyality[i] = t;
  }
}
int main() {
  int level[10], loyality[10];
  int n, k, A;
  while (~scanf("%d%d%d", &n, &k, &A)) {
    ans = 0;
    for (int i = (0); i < (n); ++i) scanf("%d%d", level + i, loyality + i);
    for (int i = (0); i < (k + 1); ++i) {
      perm(level, loyality, A, n, 0, i);
    }
    printf("%.10f\n", ans);
  }
  return 0;
}
