#include <bits/stdc++.h>
using namespace std;
const int MAXI = numeric_limits<int>::max() / 2;
const int MINI = numeric_limits<int>::min() / 2;
const long long MAXL = numeric_limits<long long>::max() / 2;
const long long MINL = numeric_limits<long long>::min() / 2;
static const int N = 5001;
int T[N];
double P[N];
double dp[N][N];
double mpow(double x, int n) {
  double ans = 1;
  while (n > 0) {
    if ((n & 1) == 1) ans *= x;
    x *= x;
    n >>= 1;
  }
  return ans;
}
int main(int argc, char* argv[]) {
  int i, j;
  int n, m;
  cin >> n >> m;
  for ((i) = (0); (i) < (n); ++(i)) {
    cin >> P[i] >> T[i];
    P[i] /= 100.0;
  }
  dp[0][0] = 1.0;
  double ans = 0.0;
  double p;
  int t;
  for ((i) = (1); (i) < (n + 1); ++(i)) {
    p = P[i - 1];
    t = T[i - 1];
    double c = mpow(1 - p, t - 2);
    for ((j) = (1); (j) < (m + 1); ++(j)) {
      if (j < t) {
        dp[i][j] = p * dp[i - 1][j - 1] + (1 - p) * dp[i][j - 1];
      } else {
        if (t == 1)
          dp[i][j] = dp[i - 1][j - t];
        else {
          dp[i][j] =
              p * dp[i - 1][j - 1] +
              (1 - p) * (dp[i][j - 1] - c * p * dp[i - 1][j - t] -
                         (j > t ? c * (1 - p) * dp[i - 1][j - t - 1] : 0)) +
              c * (1 - p) * dp[i - 1][j - t];
        }
      }
      ans += dp[i][j];
    }
  }
  cout.setf(ios::fixed);
  cout << setprecision(12) << ans << endl;
  return 0;
}
