#include <bits/stdc++.h>
using namespace std;
template <class T1, class T2>
void pr(const pair<T1, T2>& x);
template <class T, size_t SZ>
void pr(const array<T, SZ>& x);
template <class T>
void pr(const vector<T>& x);
template <class T>
void pr(const set<T>& x);
template <class T1, class T2>
void pr(const map<T1, T2>& x);
template <class T>
void pr(const T& x) {
  cout << x;
}
template <class Arg, class... Args>
void pr(const Arg& first, const Args&... rest) {
  pr(first);
  pr(rest...);
}
template <class T1, class T2>
void pr(const pair<T1, T2>& x) {
  pr("{", x.first, ", ", x.second, "}");
}
template <class T>
void prContain(const T& x) {
  pr("{");
  bool fst = 1;
  for (auto& a : x) pr(!fst ? ", " : "", a), fst = 0;
  pr("}");
}
template <class T, size_t SZ>
void pr(const array<T, SZ>& x) {
  prContain(x);
}
template <class T>
void pr(const vector<T>& x) {
  prContain(x);
}
template <class T>
void pr(const set<T>& x) {
  prContain(x);
}
template <class T1, class T2>
void pr(const map<T1, T2>& x) {
  prContain(x);
}
void ps() { pr("\n"); }
template <class Arg, class... Args>
void ps(const Arg& first, const Args&... rest) {
  pr(first, " ");
  ps(rest...);
}
template <typename T>
int remin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
int remax(T& a, const T& b) {
  if (b > a) {
    a = b;
    return true;
  }
  return false;
}
int n, k, A;
vector<pair<int, int> > p;
int cnt[10];
double ans;
double solve() {
  double ret = 0;
  for (int msk = 0; msk < 1 << n; ++msk) {
    double q = 1;
    int sum = 0;
    for (int k = 0; k < n; ++k) {
      if ((msk >> k) & 1) {
        q *= (double)(p[k].second + cnt[k] * 10) / 100;
      } else {
        sum += p[k].first;
        q *= 1 - (double)(p[k].second + cnt[k] * 10) / 100;
      }
    }
    if (__builtin_popcount(msk) <= n / 2) {
      ret += q * ((double)A / (A + sum));
    } else {
      ret += q;
    }
  }
  return ret;
}
void dfs(int i, int k) {
  if (i == n) {
    remax(ans, solve());
    return;
  }
  for (int j = 0; j <= k; ++j) {
    cnt[i] = j;
    if (p[i].second + cnt[i] * 10 > 100) break;
    dfs(i + 1, k - j);
  }
}
int main(int argc, const char** argv) {
  scanf("%d%d%d", &n, &k, &A);
  vector<int> b(n), l(n);
  for (int i = 0; i < n; ++i) {
    scanf("%d%d", &b[i], &l[i]);
    p.push_back(pair<int, int>(b[i], l[i]));
  }
  dfs(0, k);
  printf("%.10lf\n", ans);
  return 0;
}
