#include <bits/stdc++.h>
using namespace std;
template <class _T>
inline string tostr(const _T& a) {
  ostringstream os("");
  os << a;
  return os.str();
}
const int maxn = 5010;
double dp[maxn][maxn];
double sum[maxn];
double p[maxn];
int t[maxn];
double poww(double x, int y) {
  if (y == 0) return 1;
  if (y & 1) return x * poww(x, y - 1);
  double ret = poww(x, y / 2);
  return ret * ret;
}
int main() {
  int n, T;
  scanf("%d%d", &n, &T);
  for (int(i) = (0); (i) < (n); ++(i)) {
    int prob;
    scanf("%d%d", &prob, t + i);
    p[i] = prob / 100.0;
  }
  dp[0][0] = 1;
  double resp = 0, nprob = (1 - p[0]);
  for (int(j) = (1); (j) < (T + 1); ++(j)) {
    sum[j] = sum[j - 1] * nprob + dp[0][j - 1];
  }
  for (int(i) = (1); (i) < (n + 1); ++(i)) {
    nprob = (1 - p[i - 1]);
    int nn = t[i - 1];
    double powww = poww(nprob, nn - 1);
    for (int(j) = (1); (j) < (T + 1); ++(j)) {
      double s1 = sum[j];
      if (j - (nn - 1) > 0) {
        s1 -= sum[j - (nn - 1)] * powww;
      }
      dp[i][j] = s1 * p[i - 1];
      int nj = j - nn;
      if (nj >= 0) dp[i][j] += dp[i - 1][nj] * powww;
      resp += dp[i][j];
    }
    sum[0] = 0;
    nprob = (1 - p[i]);
    for (int(j) = (1); (j) < (T + 1); ++(j)) {
      sum[j] = sum[j - 1] * nprob + dp[i][j - 1];
    }
  }
  printf("%.6f\n", resp);
  return 0;
}
