#include <bits/stdc++.h>
using namespace std;
struct mynode {
  int a;
  int b;
} ps[10];
int n, m, A;
int vis[10];
int v[10];
double best;
void dfs(double &ans, int cur, double p, int B, int agr) {
  if (cur == n) {
    if (agr * 2 > n)
      ans += p;
    else
      ans += p * A / (A + B);
    return;
  }
  dfs(ans, cur + 1, p * ps[cur].b / 100, B, agr + 1);
  dfs(ans, cur + 1, p * (100 - ps[cur].b) / 100, B + ps[cur].a, agr);
}
void dfs2(int cur, int has) {
  if (cur == n) {
    double ans = 0;
    dfs(ans, 0, 1, 0, 0);
    if (best < ans) best = ans;
  }
  for (int i = 0; i <= has && ps[cur].b + 10 * i <= 100; i++) {
    ps[cur].b += 10 * i;
    dfs2(cur + 1, has - i);
    ps[cur].b -= 10 * i;
  }
}
int main() {
  int i, j;
  while (scanf("%d%d%d", &n, &m, &A) != EOF) {
    for (i = 0; i < n; i++) {
      scanf("%d%d", &ps[i].a, &ps[i].b);
    }
    best = 0;
    dfs2(0, m);
    printf("%.9lf\n", best);
  }
  return 0;
}
