#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return a ? gcd(b % a, a) : b; }
const int MAXN = 5010;
double d[MAXN][MAXN];
double p[MAXN];
int b[MAXN];
double pow1[MAXN];
int main() {
  bool debug = false;
  cin.sync_with_stdio(0);
  cin.tie(0);
  for (int i = 0; i < 5005; i++)
    for (int j = 0; j < 5005; j++) d[i][j] = 0;
  d[0][0] = 1;
  double gl_ans = 0;
  int n, t;
  cin >> n >> t;
  for (int i = 0; i < n; i++) {
    cin >> p[i] >> b[i];
    p[i] /= 100;
    if (b[i] == 1) p[i] = 1;
  }
  double last = 0;
  double last_sum;
  for (int i = 1; i <= n; i++) {
    double left = 1;
    if (i == 1 || p[i - 1] != p[i - 2] || b[i - 1] != b[i - 2]) {
      double sum = p[i - 1];
      pow1[0] = p[i - 1];
      for (int j = 1; j <= b[i - 1] - 2; j++) {
        pow1[j] = pow1[j - 1] * (1 - p[i - 1]);
        sum += pow1[j];
      }
      sum = 1 - sum;
      pow1[b[i - 1] - 1] = sum;
    }
    double ans = d[i - 1][i - 1] * p[i - 1];
    for (int j = i; j <= t; j++) {
      d[i][j] = ans;
      left = left - d[i][j];
      if (debug) cout << i << " " << j << ": " << d[i][j] << "\n";
      if (j + 1 >= b[i - 1]) {
        ans -= pow1[b[i - 1] - 2] * d[i - 1][j - b[i - 1] + 1];
        ans -= pow1[b[i - 1] - 1] * d[i - 1][j - b[i - 1]];
      }
      ans *= 1 - p[i - 1];
      ans += d[i - 1][j] * p[i - 1];
      if (j + 1 >= b[i - 1])
        ans += d[i - 1][j - b[i - 1] + 1] * pow1[b[i - 1] - 1];
    }
    if (debug) cout << "left: " << left << "\n";
    if (debug) cout << "\n";
    if (debug) cout << (left - last) << "*" << i - 1 << "\n";
    gl_ans += (left - last) * (i - 1);
    last = left;
  }
  cout.setf(ios::fixed);
  cout.precision(9);
  gl_ans += (1 - last) * n;
  cout << gl_ans << "\n";
  return 0;
}
