#include <bits/stdc++.h>
using namespace std;
template <typename T>
T mabs(const T &a) {
  return a < 0 ? -a : a;
}
const int SZ = 5005;
double *dyn1[5005];
double *dyn2[5005];
double pi[SZ], mi[SZ];
int ti[SZ];
int cnt;
double getDyn1(int cur, int left);
double getDyn2(int cur, int left) {
  if (cur >= cnt) return 0.0;
  if (left <= 0) return 0.0;
  double &res = dyn2[cur][left];
  if (res > -1.0) return res;
  double val1 = getDyn1(cur, left);
  if (left >= ti[cur]) {
    double val2 = getDyn1(cur, left - ti[cur] + 1);
    val2 = mi[cur] * val2;
    double val2Rignt = mi[cur] * (1 + getDyn2(cur + 1, left - ti[cur]));
    res = val1 - val2 + val2Rignt;
  } else
    res = val1;
  return res;
}
double getDyn1(int cur, int left) {
  if (cur >= cnt) return 0.0;
  if (left <= 0) return 0.0;
  double &res = dyn1[cur][left];
  if (res > -1.0) return res;
  double res1 = pi[cur] * (1 + getDyn2(cur + 1, left - 1));
  double res2 = (1 - pi[cur]) * getDyn1(cur, left - 1);
  res = res1 + res2;
  return res;
}
double fastPow(double num, int to) {
  int tc = 1;
  double res = 1.0;
  while (tc <= to) {
    if (tc & to) {
      res = res * num;
    }
    num = num * num;
    tc *= 2;
  }
  return res;
}
void calcMi() {
  for (int i = (0), ei = (cnt); i < ei; i++) {
    mi[i] = fastPow(1.0 - pi[i], ti[i] - 1);
  }
}
void run() {
  for (int i = (0), ei = (SZ); i < ei; i++) {
    dyn1[i] = new double[SZ - i];
    dyn2[i] = new double[SZ - i];
    for (int j = (0), ej = (SZ - i); j < ej; j++) {
      dyn1[i][j] = -2;
      dyn2[i][j] = -2;
    }
  }
  int n, t;
  scanf("%d%d", &n, &t);
  cnt = n;
  for (int i = (0), ei = (n); i < ei; i++) {
    int cpi, cti;
    scanf("%d%d", &cpi, &cti);
    pi[i] = cpi / 100.0;
    ti[i] = cti;
  }
  calcMi();
  double res = getDyn2(0, t);
  printf("%.8lf\n", res);
}
int main() {
  run();
  return 0;
}
