#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const double eps = 1e-9;
const int INF = inf;
const double EPS = eps;
int main() {
  int n, maxt, z;
  while (scanf("%d%d", &n, &maxt) == 2) {
    vector<long double> ps(n);
    vector<int> ts(n);
    for (int i = 0; i < (n); i++) {
      int p;
      scanf("%d%d", &p, &ts[i]);
      ps[i] = p / 100.0;
    }
    vector<long double> cdyn(maxt + 1, 0);
    cdyn[maxt] = 1;
    vector<long double> ndyn(maxt + 1, 0);
    vector<long double> toadd(maxt + 2, 0);
    long double ans = 0;
    for (int id = 0; id < (n); id++) {
      fill(ndyn.begin(), ndyn.end(), 0);
      fill(toadd.begin(), toadd.end(), 0);
      long double toCur = 1;
      for (int was = 1; was < ts[id]; was++) toCur *= 1 - ps[id];
      for (int olt = 1; olt <= maxt; olt++) {
        toadd[olt - 1] += ps[id] * cdyn[olt];
        if (olt >= ts[id]) {
          toadd[olt - ts[id]] -= toCur * ps[id] * cdyn[olt];
        }
      }
      for (int i = maxt; i >= 0; i--) {
        ndyn[i] = toadd[i];
        if (i < maxt) ndyn[i] += ndyn[i + 1] * (1 - ps[id]);
      }
      for (int olt = ts[id]; olt <= maxt; olt++) {
        ndyn[olt - ts[id]] += toCur * cdyn[olt];
      }
      {
        long double csum = 0;
        for (z = 0; z < ndyn.size(); z++) csum += ndyn[z];
        ans += csum;
      }
      cdyn.swap(ndyn);
    }
    printf("%.18f\n", (double)ans);
  }
  return 0;
}
