#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#include<unordered_map>
#include<queue>
#include<set>
#include<iomanip>
#include<cmath>
#include<string>
#define N 1000
double f[N];
double w[N], v[N];
int main()
{
int n, T;
cin >> n >> T;
double aver[N];
for (int i = 1; i <= n; i++)
{
cin >> v[i] >> w[i];
aver[i] = w[i] / v[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = T; j >= v[i]; j--)
{
for (int k = 1; k <= v[i]; k++)
f[j] = max(f[j], f[j - k] + k * aver[i]);
}
}
cout <<fixed<<setprecision(2)<<f[T];
return 0;
}