#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const int INFMEM = 63;
const int INF = 1061109567;
const long long LINF = 4557430888798830399LL;
const double DINF = numeric_limits<double>::infinity();
const long long MOD = 1000000007;
const int dx[8] = {0, 0, 1, -1, 1, -1, 1, -1};
const int dy[8] = {1, -1, 0, 0, 1, -1, -1, 1};
const char dch[4] = {'R', 'L', 'D', 'U'};
const double PI = 3.141592653589793;
inline void open(string a) {
  freopen((a + ".in").c_str(), "r", stdin);
  freopen((a + ".out").c_str(), "w", stdout);
}
inline void fasterios() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << fixed << setprecision(10);
}
int n, k, a;
int cur[10];
int b[10], l[10];
double count(int pos, int cnt, int personcnt) {
  if (pos > n) return (personcnt * 2 > n ? 1 : (double)(a) / (double)(cnt + a));
  double ret =
      0.1 * (double)(10 - cur[pos]) * count(pos + 1, cnt + b[pos], personcnt);
  ret += 0.1 * (double)(cur[pos]) * count(pos + 1, cnt, personcnt + 1);
  return ret;
}
double solve(int pos, int rem) {
  double ret = 0;
  if (pos > n) {
    return count(1, 0, 0);
  }
  for (int i = 0; i <= rem; i++) {
    if (pos == n) i = rem;
    cur[pos] = l[pos] + i;
    cur[pos] = min(cur[pos], 10);
    ret = max(ret, solve(pos + 1, rem - i));
    if (cur[pos] == 10) break;
  }
  return ret;
}
int main() {
  fasterios();
  cin >> n >> k >> a;
  for (int i = 1; i <= n; i++) {
    cin >> b[i] >> l[i];
    l[i] /= 10;
  }
  cout << solve(1, k) << '\n';
  return 0;
}
