'use strict'

function margeSort4(x) {
	function marge(i1, i2, j1, j2) {
	  if (i1 >= x.length || i2 >= x.length)
		return;     //配列の片方がないので計算不要
	  else if (j2 >= x.length) 
		j2 = x.length; // 配列jの長さは減る
	  
	  var li = i2 - i1; // 1番目の配列の長さ
	  var lj = j2 - j1; // 2番めの配列の長さ
	  if (li === 0 || lj === 0) return;
	  
	  var a  = new Array(li + lj), i = 0, j = 0, k = 0;
	  // new Array(n)で少しだけ高速?
	  
	  while(i < li && j < lj) {
		// a に要素を小さい順に入れる処理
		if (x[i1 + i] < x[j1 + j]) {
		  a[k++] = x[i1 + i];
		  i++;
		} else {
		  a[k++] = x[j1 + j];
		  j++;
		}
	  }
	  
	  if (i >= li) {
		// 比較が終わって，あまった要素をすべてaに入れる
		for (var l = 0, la = j2 - j1 - j; l < la; l++) {
		  a[k + l] = x[j1 + j + l];
		}
	  } else {
		for (var l = 0, la = i2 - i1 - i; l < la; l++) {
		  a[k + l] = x[i1 + i + l];
		}
	  }
  
	  // xのi1からj2-1の部分にaを入れる
	  for (var i = 0, l = a.length; i < l; i++) {
		x[i1 + i] = a[i];
	  }
	}
  
	for (var k = 1, lk = x.length; k < lk; k *= 2) {
	  // 1, 2, 4, 8.. の部分配列ごとに
	  for (var i = 0, li = x.length; i < li; i += k * 2) {
		marge(i, i + k, i + k, i + 2 * k);
	  }
	}
  
	return x;
  }

function Main(input){
	let temp = input.trim().split("\n");
	let NM = temp[0].split(" ").map( (v)=>(parseInt(v)) );
	let AB = new Array(NM[0]);
	for(let i=0;i<NM[0];i++){
		AB[i] = temp[i+1].split(" ").map( (v)=>(parseInt(v)) );
	}
	//AB.sort((a,b)=>(a[0] < b[0])?-1:1);
	margeSort4(AB);

	let count = NM[1];
	let money = 0;
	for(let i=0;i<NM[0];i++){
		if(AB[i][1] < count){
			//全部加算
			money += AB[i][0] * AB[i][1];
			count -= AB[i][1];
		} else {
			money += AB[i][0] * count;
			break;
		}
	}
	console.log(money);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));