#include <bits/stdc++.h>
using namespace std;
double dp[5005][5005];
double tem[5005];
int main() {
  int n, T;
  cin >> n >> T;
  pair<int, int> A[n + 1];
  for (int i = 1; i <= n; ++i) {
    cin >> A[i].first >> A[i].second;
  }
  double carry = 1.0;
  for (int i = 1; i < A[1].second; ++i) {
    dp[i][1] = (1.0 * carry * A[1].first) / (1.0 * 100.0);
    carry = ((100.0 - 1.0 * A[1].first) / (1.0 * 100.0)) * carry;
    tem[i] = dp[i][1];
  }
  dp[A[1].second][1] = 1.0 * carry;
  tem[A[1].second] = dp[A[1].second][1];
  int sum = A[1].second;
  for (int i = 2; i <= n; ++i) {
    carry = ((100.0 - 1.0 * A[i].first) / (1.0 * 100.0));
    double b = 1.0 * A[i].second - 1.0;
    double temp = pow(carry, b);
    double sun = 0;
    for (int j = i; j <= min(sum + A[i].second, T); ++j) {
      if (j - A[i].second >= i - 1) {
        sun = (-1.0 * temp * tem[j - A[i].second]);
        dp[j][i] += 1.0 * temp * tem[j - A[i].second];
      }
      dp[j][i] +=
          (((1.0 * A[i].first) / (1.0 * 100.0)) * (dp[j - 1][i - 1] + sun));
      dp[j][i - 1] += (carry * (dp[j - 1][i - 1] + sun));
    }
    for (int j = i; j <= min(sum + A[i].second, T); ++j) {
      tem[j] = dp[j][i];
    }
    sum += A[i].second;
  }
  double ans = 0;
  for (int i = 1; i < n; ++i) {
    ans += ((1.0 * i) * (dp[min(sum, T)][i]));
  }
  for (int i = n; i <= T; ++i) {
    ans += (1.0 * n) * (dp[i][n]);
  }
  printf("%.10f\n", ans);
  return 0;
}
