#include <bits/stdc++.h>
using namespace std;
int n, T;
double dp[5005][5005];
double ans;
double tot;
double p[5005];
int t[5005];
void ini() {
  ans = 0;
  tot = 0;
  T++;
  memset(dp, 0, sizeof(dp));
  int i;
  for (i = 1; i <= n; i++) {
    scanf("%lf%d", &p[i], &t[i]);
    p[i] /= 100;
  }
  dp[1][0] = 1.0;
}
void solve() {
  int i, j;
  int tmin, tmax;
  tmin = 1, tmax = 1;
  for (i = 1; i <= min(n, T); i++) {
    tmin++;
    tmax = min(T, tmax + t[i]);
    for (j = tmin; j < min(tmax, tmin + t[i] - 1); j++) {
      dp[j][i] = dp[j - 1][i] * (1 - p[i]) + dp[j - 1][i - 1] * p[i];
    }
    if (j <= tmax) {
      dp[j][i] = dp[j - 1][i] * (1 - p[i]) + dp[j - 1][i - 1] * p[i] +
                 dp[j - t[i]][i - 1] * pow(1 - p[i], t[i]);
      j++;
    }
    if (i == 1) continue;
    for (; j <= tmax; j++) {
      dp[j][i] =
          (dp[j - 1][i] - dp[j - t[i] - 1][i - 1] * pow(1 - p[i], t[i] - 1)) *
              (1 - p[i]) +
          dp[j - 1][i - 1] * p[i] + dp[j - t[i]][i - 1] * pow(1 - p[i], t[i]);
    }
  }
}
void out() {
  int i, j;
  for (j = 2; j <= T; j++) {
    for (i = 1; i <= n; i++) {
      tot += dp[j][i];
    }
  }
  printf("%.8f\n", tot);
}
int main() {
  while (scanf("%d%d", &n, &T) != EOF) {
    ini();
    solve();
    out();
  }
  return 0;
}
