// http://w...content-available-to-author-only...j.com/problems/COINS/
// segmentation error(SIGSEGV), map maximum size over problem
#include <stdio.h>
#include <map>
using namespace std;
map<long long int, long long int> mymap;
long long int exchangeCoin(long long int byteland);
int main() {
long long int inputCoin;
bool button = false;
while(scanf("%lld", &inputCoin) != EOF){
if(button == false) button = true;
else printf("\n");
if(inputCoin != 0){
long long int result = exchangeCoin(inputCoin);
printf("%lld", result);
}
else{
printf("%lld", 0);
}
}
return 0;
}
long long int exchangeCoin(long long int byteland){
map<long long int, long long int>::iterator it;
it = mymap.find(byteland);
if(it != mymap.end()){
return it->second;
}
else{
long long int a = byteland/2;
long long int b = byteland/3;
long long int c = byteland/4;
if(a+b+c < byteland){
return byteland;
}
else{
long long int resultA = exchangeCoin(a);
long long int resultB = exchangeCoin(b);
long long int resultC = exchangeCoin(c);
mymap.insert(pair<long long int, long long int>(byteland, resultA+resultB+resultC));
return (resultA + resultB + resultC);
}
}
}
Ly8gaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmouY29tL3Byb2JsZW1zL0NPSU5TLwovLyBzZWdtZW50YXRpb24gZXJyb3IoU0lHU0VHViksIG1hcCBtYXhpbXVtIHNpemUgb3ZlciBwcm9ibGVtCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbWFwPGxvbmcgbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQ+IG15bWFwOwoKbG9uZyBsb25nIGludCBleGNoYW5nZUNvaW4obG9uZyBsb25nIGludCBieXRlbGFuZCk7CgppbnQgbWFpbigpIHsKCWxvbmcgbG9uZyBpbnQgaW5wdXRDb2luOwoJYm9vbCBidXR0b24gPSBmYWxzZTsKCXdoaWxlKHNjYW5mKCIlbGxkIiwgJmlucHV0Q29pbikgIT0gRU9GKXsKCQlpZihidXR0b24gPT0gZmFsc2UpIGJ1dHRvbiA9IHRydWU7CgkJZWxzZSBwcmludGYoIlxuIik7CgkJaWYoaW5wdXRDb2luICE9IDApewoJCQlsb25nIGxvbmcgaW50IHJlc3VsdCA9IGV4Y2hhbmdlQ29pbihpbnB1dENvaW4pOwoJCQlwcmludGYoIiVsbGQiLCByZXN1bHQpOwoJCX0KCQllbHNlewoJCQlwcmludGYoIiVsbGQiLCAwKTsKCQl9Cgl9CglyZXR1cm4gMDsKfQoKbG9uZyBsb25nIGludCBleGNoYW5nZUNvaW4obG9uZyBsb25nIGludCBieXRlbGFuZCl7CgltYXA8bG9uZyBsb25nIGludCwgbG9uZyBsb25nIGludD46Oml0ZXJhdG9yIGl0OwoJaXQgPSBteW1hcC5maW5kKGJ5dGVsYW5kKTsKCWlmKGl0ICE9IG15bWFwLmVuZCgpKXsKCQlyZXR1cm4gaXQtPnNlY29uZDsKCX0KCWVsc2V7CgkJbG9uZyBsb25nIGludCBhID0gYnl0ZWxhbmQvMjsKCQlsb25nIGxvbmcgaW50IGIgPSBieXRlbGFuZC8zOwoJCWxvbmcgbG9uZyBpbnQgYyA9IGJ5dGVsYW5kLzQ7CgkJCgkJaWYoYStiK2MgPCBieXRlbGFuZCl7IAoJCQlyZXR1cm4gYnl0ZWxhbmQ7CgkJfQoJCWVsc2V7CgkJCWxvbmcgbG9uZyBpbnQgcmVzdWx0QSA9IGV4Y2hhbmdlQ29pbihhKTsKCQkJbG9uZyBsb25nIGludCByZXN1bHRCID0gZXhjaGFuZ2VDb2luKGIpOwoJCQlsb25nIGxvbmcgaW50IHJlc3VsdEMgPSBleGNoYW5nZUNvaW4oYyk7CgkJCW15bWFwLmluc2VydChwYWlyPGxvbmcgbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQ+KGJ5dGVsYW5kLCByZXN1bHRBK3Jlc3VsdEIrcmVzdWx0QykpOwoJCQkKCQkJcmV0dXJuIChyZXN1bHRBICsgcmVzdWx0QiArIHJlc3VsdEMpOwoJCX0KCX0KfQ==