#include <iostream>
#include <map>
using namespace std;
int calcZ(int px, long long D){
int res = 0;
while (px){
res+=px;
px/=D;
}
return res;
}
long long calc(map<long long,int> factor){
long long ans = 0;
for (auto x : factor){
auto value = x.first;
auto degree= x.second;
int curD = 1;
while (calcZ(curD,value) < degree)
curD++;
ans = max(ans,curD*value);
}
return ans;
}
int main() {
// your code goes here
map<long long,int> m;
m[2] = 2;
cout << calc (m)<<endl;// (4)
m[2] = 3;
cout << calc (m)<<endl;// (8)
m[3] = 2;
cout << calc (m)<<endl;// (72)
m[3] = 0;
m[2] = 20;
cout << calc (m)<<endl;// (2^20)
m[2] = 3;
m[3] = 1;
m[5] = 1;
cout << calc (m)<<endl;// 120
m[2] = 0;
m[3] = 3;
m[5] = 1;
m[7] = 1;
cout << calc (m)<<endl;// 945
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNhbGNaKGludCBweCwgbG9uZyBsb25nIEQpewoJaW50IHJlcyA9IDA7Cgl3aGlsZSAocHgpewoJCXJlcys9cHg7CgkJcHgvPUQ7Cgl9CQoJcmV0dXJuIHJlczsKfQoKbG9uZyBsb25nIGNhbGMobWFwPGxvbmcgbG9uZyxpbnQ+IGZhY3Rvcil7Cglsb25nIGxvbmcgYW5zID0gMDsKICAgCWZvciAoYXV0byB4IDogZmFjdG9yKXsKICAgCQlhdXRvIHZhbHVlID0geC5maXJzdDsKICAgCQlhdXRvIGRlZ3JlZT0geC5zZWNvbmQ7CiAgIAkJaW50IGN1ckQgPSAxOwogICAJCXdoaWxlIChjYWxjWihjdXJELHZhbHVlKSA8IGRlZ3JlZSkKICAgCQkJY3VyRCsrOwogICAJCWFucyA9IG1heChhbnMsY3VyRCp2YWx1ZSk7CiAgIAl9CiAgIAlyZXR1cm4gYW5zOwp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCW1hcDxsb25nIGxvbmcsaW50PiBtOwoJbVsyXSA9IDI7Cgljb3V0IDw8IGNhbGMgKG0pPDxlbmRsOy8vICg0KQoJbVsyXSA9IDM7Cgljb3V0IDw8IGNhbGMgKG0pPDxlbmRsOy8vICg4KQoJbVszXSA9IDI7Cgljb3V0IDw8IGNhbGMgKG0pPDxlbmRsOy8vICg3MikKCW1bM10gPSAwOwoJbVsyXSA9IDIwOwoJY291dCA8PCBjYWxjIChtKTw8ZW5kbDsvLyAoMl4yMCkgCgltWzJdID0gMzsKCW1bM10gPSAxOwoJbVs1XSA9IDE7Cgljb3V0IDw8IGNhbGMgKG0pPDxlbmRsOy8vIDEyMCAKCW1bMl0gPSAwOwoJbVszXSA9IDM7CgltWzVdID0gMTsKCW1bN10gPSAxOwoJY291dCA8PCBjYWxjIChtKTw8ZW5kbDsvLyA5NDUgCglyZXR1cm4gMDsKfQ==