import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;
import std.ascii;
import std.bigint;
import std.container;
import std.typecons;

auto readInts() {
	return array(map!(to!int)(readln().strip().split()));
}
auto readInt() {
	return readInts()[0];
}
auto readLongs() {
	return array(map!(to!long)(readln().strip().split()));
}
auto readLong() {
	return readLongs()[0];
}

const real eps = 1e-10;

void main(){
	while(true) {
		auto nm = readInts();
		auto n = nm[0];
		auto m = nm[1];
		if(n == 0 && m == 0) {
			return;
		}
		long[][] dp;
		for(int i; i < n; ++i) {
			dp ~= readLongs();
		}
		dp.sort!((a,b) => a[1] > b[1]); 
		while(m > 0 && !dp.empty) {
			auto l = dp[0][0];
			if(l <= m) {
				dp = dp[1..$];
				m -= l;
			} else {
				dp[0][0] -= m;
				m = 0;
			}
		}
		writeln(reduce!("a+b")(0L,dp.map!(a => a[0]*a[1])));
	}
}