#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct mde
{
	long long a, k;
};

bool lessp(mde x, mde y)
{
	return x.k > y.k;
}

bool lessq(mde x, mde y)
{
	return x.a > y.a;
}



int main()
{
	long long n, s, ans = 0;
	freopen("castle.in", "r", stdin);
	freopen("castle.out", "w", stdout);
	cin >> n >> s;
	vector<mde> mas;
	vector<long long> x;
	mas.resize(n);
	x.assign(n, 0);
	for (int i = 0; i < n; i++)
	{
		long long x, y;
		cin >> x >> y;
		mde k;
		k.a = x;
		k.k = y;
		mas[i] = k;
		ans += x;
	}
	sort(mas.begin(), mas.end(), lessp);
	for (int i = 0; i < n; i++)
	{
		long long x = mas[i].a / mas[i].k;
		if (x <= s)
		{
			s -= x;
			ans -= mas[i].k * x;
			mas[i].a = mas[i].a - mas[i].k * x;
		}
		else
		{
			ans -= mas[i].k * s;
			mas[i].a = mas[i].a - mas[i].k * s;
			s = 0;
		}
	}
	for (int i = 0; i < n; i++)
	{
		mas[i].a = min(mas[i].a, mas[i].k);
	}
	sort(mas.begin(), mas.end(), lessq);
	for (int i = 0; i < n; i++)
	{
		if (s > 0)
		{
			ans -= mas[i].a;
			s--;
		}
	}
	cout << ans;
	return 0;
}