#include <stdio.h>
#include <stdlib.h>
int MaxGet(int**,int,int);
void BubbleSort(int**,int);
int main () {
int num,i;
int max,cap;
scanf("%d",&num);
scanf("%d",&cap);
int **v=(int**)malloc(num*sizeof(int*));
for(i=0;i<num;i++){
*(v+i)=(int*)malloc(2*sizeof(int));
}
int *w=(int*)malloc(sizeof(int)*num);
for(i=0;i<num;i++){
scanf("%d %d",&v[i][0],&v[i][1]);
}
BubbleSort(v,3);
// for(i=0;i<num;i++){
// printf("%d",*(*(v+i)+1));
// }
max=MaxGet(v,num,cap);
printf("%d",max);
}
int MaxGet(int** v,int num,int cap){
int i=0,v1=0,w1=0;
int max=0;
for(i=0;cap>0&&i<num;i++){
v1=v[i][0];
w1=v[i][1];
//printf("%d",w1);
if(w1<=cap){
max+=v1*w1;
cap-=w1;
}
else{
max+=cap*v1;
break;
}
}
return max;
}
void BubbleSort(int** v,int num){
int i=0,j=0,k=0,temp=0;
for(i=0;i<num-1;i++){
int count=0;
for(j=num-1;j>i;j--){
if(v[j][0]>v[j-1][0]){
temp=v[j][0];
v[j][0]=v[j-1][0];
v[j-1][0]=temp;
temp=v[j][1];
v[j][1]=v[j-1][1];
v[j-1][1]=temp;
count=1;
}
}
if(count==0){
break;
}
}
}