#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T sqr(const T& x) {
  return x * x;
}
template <class T>
inline void updMin(T& a, const T& b) {
  if (b < a) a = b;
}
template <class T>
inline void updMax(T& a, const T& b) {
  if (b > a) a = b;
}
int n, T;
const int maxn = 5005;
int t[maxn];
double p[maxn];
double f[maxn][maxn];
int main() {
  scanf("%d %d", &n, &T);
  for (int i = 0; i < n; i++) {
    int pp;
    scanf("%d %d", &pp, &t[i]);
    p[i] = pp / 100.0;
  }
  for (int i = n - 1; i >= 0; i--) {
    if (t[i] == 1 || p[i] > 1 - 1e-7) {
      for (int tt = 1; tt <= T; tt++) {
        f[i][tt] = 1 + f[i + 1][tt - 1];
      }
      continue;
    }
    double ppow = 1;
    for (int j = 0; j < t[i] - 1; j++) {
      ppow *= (1 - p[i]);
    }
    f[i][0] = 0;
    for (int tt = 1; tt <= t[i] - 1; tt++) {
      f[i][tt] = (1 - p[i]) * f[i][tt - 1] + 1 + f[i + 1][tt - 1];
    }
    for (int tt = t[i]; tt <= T; tt++) {
      f[i][tt] = (1 - p[i]) * f[i][tt - 1] - ppow * (1 + f[i + 1][tt - t[i]]) +
                 1 + f[i + 1][tt - 1];
    }
    for (int tt = 0; tt <= T; tt++) {
      f[i][tt] = p[i] * f[i][tt];
      if (tt >= t[i]) f[i][tt] += ppow * (1 + f[i + 1][tt - t[i]]);
    }
  }
  cout.precision(30);
  cout.setf(ios::fixed);
  cout << f[0][T] << "\n";
  return 0;
}
