#include <bits/stdc++.h>
using namespace std;
struct {
  int level;
  int loy;
} S[8];
double ans;
int n, k, A;
double calc(int now, double P, int pass, int B) {
  if (now >= n) {
    if (pass * 2 > n)
      return P;
    else
      return P * ((double)A / (A + B));
  }
  return calc(now + 1, P * S[now].loy / 100.0, pass + 1, B) +
         calc(now + 1, P * ((100 - S[now].loy) / 100.0), pass,
              B + S[now].level);
}
int dfs(int now, int k, int lmt) {
  if (lmt < k) return 0;
  if (now >= n) return ans = max(calc(0, 1.0, 0, 0), ans);
  for (int give = 0; give <= k && give * 10 + S[now].loy <= 100; give++) {
    S[now].loy += give * 10;
    dfs(now + 1, k - give, lmt - ((100 - S[now].loy) / 10));
    S[now].loy -= give * 10;
  }
  return 0;
}
int main() {
  scanf("%d%d%d", &n, &k, &A);
  int lmt = 0;
  for (int i = 0; i < n; ++i) {
    scanf("%d%d", &S[i].level, &S[i].loy);
    lmt += (100 - S[i].loy) / 10;
  }
  if (lmt <= k)
    ans = 1;
  else {
    ans = 0;
    dfs(0, k, lmt);
  }
  printf("%.16f\n", ans);
}
