#include <bits/stdc++.h>
using namespace std;
int N, K, A;
int bs[16];
int ls[16];
double table[16][1][1 << 8];
double calc(int now, int k, int need, int B, int req) {
  if (table[now][k][need])
    return table[now][k][need] - 1;
  else {
    double& v = table[now][k][need];
    if (!req)
      v = 1.0;
    else if (now == N)
      v = A / (double)(A + B);
    else {
      v = (calc(now + 1, k, need | (1 << now), B, req - 1) * ls[now] +
           calc(now + 1, k, need, B + bs[now], req) * (100 - ls[now])) /
          100.0;
      for (int i = 1; i <= k; i++)
        v = max(v, (calc(now + 1, k - i, need | (1 << now), B, req - 1) *
                        min(100, ls[now] + i * 10) +
                    calc(now + 1, k - i, need, B + bs[now], req) *
                        (100 - min(100, ls[now] + i * 10))) /
                       100.0);
    }
    return v++;
  }
}
double calc2(int now, int k) {
  if (now == N) {
    memset(table, 0, sizeof(table));
    return calc(0, 0, 0, 0, N / 2 + 1);
  } else {
    double ret = calc2(now + 1, k);
    int tmp = ls[now];
    while (k--) {
      ls[now] = min(100, ls[now] + 10);
      ret = max(ret, calc2(now + 1, k));
    }
    ls[now] = tmp;
    return ret;
  }
}
int main() {
  scanf("%d%d%d", &N, &K, &A);
  for (int i = 0; i < N; i++) scanf("%d%d", bs + i, ls + i);
  printf("%.9f\n", calc2(0, K));
  return 0;
}
