#include <bits/stdc++.h>
using namespace std;
struct node {
  int k, lo;
};
node a[10];
int now[10];
int n, m, k;
double ans, p, tmp, sum;
double tt[10];
bool bi[10];
double cal() {
  double t = 1;
  for (int i = 1; i <= n; ++i)
    if (bi[i])
      t *= (1.0 - tt[i]);
    else
      t *= (tt[i]);
  t *= (p / (p + sum));
  return t;
}
double cal2() {
  double t = 1;
  for (int i = 1; i <= n; ++i)
    if (bi[i])
      t *= (1.0 - tt[i]);
    else
      t *= (tt[i]);
  return t;
}
void gao(int deep, int k) {
  if (deep == n + 1) {
    if (k >= (n + 1) / 2)
      tmp += cal();
    else
      tmp += cal2();
    return;
  }
  bi[deep] = false;
  gao(deep + 1, k);
  if (fabs(tt[deep] - 1.0) < 1e-8) return;
  sum += a[deep].k;
  bi[deep] = true;
  gao(deep + 1, k + 1);
  sum -= a[deep].k;
}
void check() {
  tmp = 0;
  for (int i = 1; i <= n; ++i)
    tt[i] = (double)min(a[i].lo + now[i], 100) / 100.0;
  memset(bi, false, sizeof(bi));
  sum = 0;
  gao(1, 0);
  ans = max(ans, tmp);
}
void dfs(int deep, int k) {
  if (deep == n + 1) {
    if (k == 0) {
      check();
    }
    return;
  }
  for (int i = 0; i <= k; ++i) {
    now[deep] = i * 10;
    dfs(deep + 1, k - i);
  }
  now[deep] = 0;
}
int main() {
  sum = 0;
  scanf("%d%d%lf", &n, &k, &p);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &a[i].k, &a[i].lo);
  }
  ans = 0;
  dfs(1, k);
  printf("%.10f\n", ans);
  return 0;
}
