#include <bits/stdc++.h>
using namespace std;
int N, A;
int level[10], loyalty[10], loyalty2[10];
double ans;
int cnt;
double check(void) {
  int bad, i;
  double ans = 0.0;
  for ((bad) = 0; (bad) < (int)((1 << N)); (bad)++) {
    double p = 1.0;
    int B = 0;
    int cnt = 0;
    for ((i) = 0; (i) < (int)(N); (i)++) {
      if (bad & (1 << i)) {
        p *= 1.0 - loyalty2[i] / 100.0;
        B += level[i];
      } else {
        p *= loyalty2[i] / 100.0;
        cnt++;
      }
    }
    if (cnt * 2 > N)
      ans += p;
    else
      ans += p * A / (A + B);
  }
  return ans;
}
void dfs(int pos, int K) {
  int i;
  if (pos == N) {
    double p = check();
    ans = max(ans, p);
    return;
  }
  for ((i) = 0; (i) < (int)(K + 1); (i)++) {
    loyalty2[pos] = min(loyalty[pos] + 10 * i, 100);
    dfs(pos + 1, K - i);
  }
}
int main(void) {
  int K, i;
  cin >> N >> K >> A;
  for ((i) = 0; (i) < (int)(N); (i)++) cin >> level[i] >> loyalty[i];
  dfs(0, K);
  printf("%.9f\n", ans);
  return 0;
}
