#include <bits/stdc++.h>
using namespace std;
struct node {
  int le;
  int lo;
} sen[10];
int n, bitc[500], cc = 0;
double sol = -1, a;
int bitcnt(int xx) {
  if (bitc[xx]) return bitc[xx];
  int tot = 0, x = xx;
  while (x) {
    if (x & 1) tot++;
    x >>= 1;
  }
  bitc[xx] = tot;
  return tot;
}
void distr(int s, int k) {
  if (!k || s == n) {
    int tot = 0;
    double pp = 0;
    for (int i = 0; i < (1 << n); i++) {
      double p = -1, b = 0.0;
      for (int j = 0; j < n; j++) {
        if (i & (1 << j))
          p = (p == -1) ? (double)(sen[j].lo / 100.0)
                        : p * (double)(sen[j].lo / 100.0);
        else {
          p = (p == -1) ? (double)((100 - sen[j].lo) / 100.0)
                        : p * (double)((100 - sen[j].lo) / 100.0);
          b += sen[j].le;
        }
      }
      if (2 * bitcnt(i) <= n) p *= (double)(a / (a + b));
      pp += p;
    }
    sol = (sol < pp) ? pp : sol;
    return;
  }
  int tmp = sen[s].lo;
  for (int i = 0; i <= k && tmp + 10 * i <= 100; i++) {
    sen[s].lo = tmp + i * 10;
    distr(s + 1, k - i);
  }
  sen[s].lo = tmp;
}
int main() {
  int k;
  scanf("%d%d%lf", &n, &k, &a);
  for (int i = 0; i < n; i++) scanf("%d%d", &sen[i].le, &sen[i].lo);
  distr(0, k);
  printf("%.10f\n", sol);
  return 0;
}
