#include <bits/stdc++.h>
using namespace std;
struct _ {
  _() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
  }
} _;
template <class A, class B>
ostream &operator<<(ostream &o, pair<A, B> t) {
  o << "(" << t.first << ", " << t.second << ")";
  return o;
}
template <class T>
T convert(string s) {
  T first;
  stringstream(s) >> first;
  return first;
}
template <class T>
string tostring(T first, int w = 0, char c = ' ') {
  stringstream ss;
  ss << first;
  string r(ss.str());
  return string(max(0, w - (int)r.size()), c) + r;
}
template <class T>
void PV(T a, T b, int n = 0, int w = 0, string s = " ") {
  int c = 0;
  while (a != b) {
    cout << tostring(*a++, w);
    if (a != b && (!n || ++c % n))
      cout << s;
    else
      cout << "\n";
  }
}
template <class T>
inline bool chmin(T &a, T b) {
  return a > b ? a = b, 1 : 0;
}
template <class T>
inline bool chmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
}
const long long linf = 0x3f3f3f3f3f3f3f3fLL;
const int inf = 0x3f3f3f3f;
const int mod = int(1e9) + 7;
const int N = 5010;
int n, T;
int p[N];
int t[N];
double pw[101][N];
double dp[2][N];
double sum[2][N];
int main() {
  cin >> n >> T;
  for (int i = 0; i <= 100; i++) {
    pw[i][0] = 1;
    for (int j = 1; j < N; j++) {
      pw[i][j] = pw[i][j - 1] * (i / 100.0);
    }
  }
  for (int i = 1; i <= n; i++) cin >> p[i] >> t[i];
  t[n + 1] = T + 1;
  double res = 0;
  dp[0][0] = 1;
  for (int j = 0; j <= T; j++)
    sum[0][j + 1] = sum[0][j] * pw[100 - p[1]][1] + dp[0][j];
  for (int i = 1; i <= n; i++) {
    int to = i & 1, from = 1 - to;
    fill(&dp[to][0], &dp[to + 1][0], 0);
    fill(&sum[to][0], &sum[to + 1][0], 0);
    for (int j = 1; j <= T; j++) {
      int mk = min(t[i] - 1, j);
      dp[to][j] = (sum[from][j] - sum[from][j - mk] * pw[100 - p[i]][mk]) *
                  p[i] / 100.0;
      if (j >= t[i]) dp[to][j] += dp[from][j - t[i]] * pw[100 - p[i]][t[i] - 1];
    }
    for (int j = 0; j <= T; j++)
      sum[to][j + 1] = sum[to][j] * pw[100 - p[i + 1]][1] + dp[to][j];
    res += dp[to][T] * i;
    for (int j = max(T - t[i + 1] + 1, 0); j < T; j++) {
      res += dp[to][j] * pw[100 - p[i + 1]][T - j] * i;
    }
  }
  cout << fixed << setprecision(10) << res << endl;
  return 0;
}
