#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define el "\n"
const ll N = 2e5 + 10;
ll n = 0, a[N] = {};
string ans = "1";
struct node{
string l, r;
}nums[N];
string cheng(string s,string t){
int a[10005]={},b[10005]={},c[10005]={};
for(int i=0;i<s.size();i++)a[1+i]=s[s.size()-1-i]-'0';
for(int i=0;i<t.size();i++)b[1+i]=t[t.size()-1-i]-'0';
a[0]=s.size();
b[0]=t.size();
int maxn=a[0]+b[0];
for(int i=1;i<=a[0];i++)for(int j=1;j<=b[0];j++)c[i+j-1]+=a[i]*b[j];
for(int i=1;i<=maxn;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
c[0]=maxn;
while(c[c[0]]==0&&c[0]>1)c[0]--;
string res;
for(int i=c[0];i>=1;i--)res=res+char(c[i]+'0');
return res;
}
void chu(string s, int chushu) {
int maxn = 10010;
int a[maxn],c[maxn];
long long x=0;
int n=s.length();
for(int i=0;i<n;i++)
a[i+1]=s[i]-'0';
for(int i=1;i<=n;i++){
x=x*10+a[i];
c[i]= x / chushu;
x%=chushu;
}
int lenc=1;
while(c[lenc]==0&&lenc<n) lenc++;
for(int i=lenc;i<=n;i++)
cout<<c[i];
}
int scmp(string s,string t){
if(s==t)return 0;
else if(s.size()<t.size()||s.size()==t.size()&&s<t)return -1;
else return 1;
}
bool cmp(node aa,node bb)
{
string ans1 = cheng(aa.l, aa.r);
string ans2 = cheng(bb.l, bb.r);
return scmp(ans1, ans2) == 1;
}
//vector<ll> v;
void solve() {
cin >> n;
cin >> nums[1].l >> nums[1].r;
for (ll i = 2; i <= n + 1; i++) {
cin >> nums[i].l >> nums[i].r;
}
sort(nums + 1, nums + n + 1, cmp);
for (ll i = 1; i <= n; i++) {
ans = cheng(ans, nums[i].l);
}
int chushu = stoi(nums[n + 1].r);
chu(ans, chushu);
}
void pre() { //预处理
}
void init() { //初始化
}
int main() {
// freopen ("", "r", stdin);
// freopen ("", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cin.tie(0);
int T = 1;
pre();
while (T--) {
init();
solve();
}
return 0;
}