#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10;
int n, m, A, bits[(1 << MAXN) + 5];
double ans;
struct Senator {
  int loyal, level;
} senator[MAXN];
inline double calc() {
  double res = 0, now;
  for (int i = 0; i < (1 << n); ++i) {
    now = 1;
    for (int j = 0; j < n; ++j)
      if (1 << j & i)
        now *= senator[j].loyal / 100.0;
      else
        now *= 1.0 - senator[j].loyal / 100.0;
    if (bits[i] <= n / 2) {
      int cnt = 0;
      for (int j = 0; j < n; ++j)
        if (!(1 << j & i)) cnt += senator[j].level;
      res += now * A / (A + cnt);
    } else
      res += now;
  }
  return res;
}
void dfs(int dep, int candy) {
  if (dep == n - 1) {
    if (senator[dep].loyal + (m - candy) * 10 > 100)
      candy = m - (100 - senator[dep].loyal) / 10;
    senator[dep].loyal += (m - candy) * 10;
    ans = max(ans, calc());
    senator[dep].loyal -= (m - candy) * 10;
    return;
  }
  for (int i = 0; i <= m - candy; ++i)
    if (senator[dep].loyal + i * 10 > 100)
      break;
    else {
      senator[dep].loyal += i * 10;
      dfs(dep + 1, candy + i);
      senator[dep].loyal -= i * 10;
    }
}
int main() {
  for (int i = 1; i < (1 << MAXN); ++i) bits[i] = bits[i >> 1] + (i & 1);
  cin >> n >> m >> A;
  for (int i = 0; i < n; ++i) cin >> senator[i].level >> senator[i].loyal;
  ans = 0;
  dfs(0, 0);
  cout << setprecision(10) << fixed << ans << endl;
}
