#include <bits/stdc++.h>
using namespace std;
vector<int> add(vector<int> x,vector<int> y)
{
vector<int> ans;
int flag=0;
for (int i=0;i<x.size()||i<y.size();i++)
{
if (i<x.size()&&i>=y.size())
{
int a=(x[i]+0+flag)%10;
ans.push_back(a);
flag=(x[i]+0+flag)/10;
}
if(i<y.size()&&i>=x.size())
{
int a=(0+y[i]+flag)%10;
ans.push_back(a);
flag=(0+y[i]+flag)/10;
}
if (i<y.size()&&i<x.size())
{
int a=(x[i]+y[i]+flag)%10;
ans.push_back(a);
flag=(x[i]+y[i]+flag)/10;
}
}
if (flag!=0)
ans.push_back(flag);
return ans;
}
vector<int> divi(vector<int> x,int y)
{
vector<int> ans;
int res=0;
for (int i=x.size()-1;i>=0;i--)
{
res=res*10+x[i];
ans.push_back(res/y);
res=res%y;
}
vector<int> number;
int i=0;
while (ans[i]==0)
{
i++;
}
for (int j=i;j<ans.size();j++)
{
number.push_back(ans[j]);
}
return number;
}
vector<int> multi(vector<int> x,int y)
{
vector<int> tmp1,tmp2;
tmp1=x;
while (y!=0)
{
tmp2.push_back(y%10);
y/=10;
}
vector<int> ans[tmp2.size()];
for (int i=0;i<tmp2.size();i++)
{
int flag=0;
for (int j=0;j<tmp1.size();j++)
{
int a=(tmp2[i]*tmp1[j]+flag)%10;
ans[i].push_back(a);
flag=(tmp2[i]*tmp1[j]+flag)/10;
}
if (flag!=0)
ans[i].push_back(flag);
}
vector<int> final_ans;
final_ans=ans[0];
for (int i=1;i<tmp2.size();i++)
{
int j=i;
while (j--)
{
ans[i].insert(ans[i].begin(), 0);
}
final_ans=add(final_ans,ans[i]);
}
return final_ans;
}
int main()
{
int n;
cin>>n;
int a,b;
cin>>a>>b;
vector<int> lord[n];
for (int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
lord[i].push_back(x);
lord[i].push_back(y);
}
for (int i=0;i<n-1;i++)
{
for (int j=0;j<n-1-i;j++)
{
int x=lord[j][0]*lord[j][1];
int y=lord[j+1][0]*lord[j+1][1];
if (x>y)
{
vector<int> tmp=lord[j];
lord[j]=lord[j+1];
lord[j+1]=tmp;
}
}
}
vector<int> count;
if (a==0)
count.push_back(a);
while (a!=0)
{
count.push_back(a%10);
a/=10;
}
for (int i=0;i<n;i++)
{
if (i!=n-1)
{
count=multi(count,lord[i][0]);
}
else
count=divi(count,lord[i][1]);
}
for (int i=0;i<count.size();i++)
{
cout<<count[i];
}
return 0;
}