#include<bits/stdc++.h>
using namespace std;
long long MOD = 100000000;
struct Mat
{
long long x[4][4];
Mat()
{
memset(x, 0 ,sizeof(x));
}
void I()
{
memset(x, 0, sizeof(x));
x[1][1] = x[2][2] = x[3][3] = 1;
}
Mat pow(long long y)
{
Mat re; re.I();
Mat tmp = (*this);
while(y)
{
if(y&1) re = re*tmp;
tmp = tmp*tmp;
y>>=1;
}
return re;
}
Mat operator * (const Mat& a)
{
Mat re;
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) for(int k=1;k<=3;k++)
{
re.x[i][k] += x[i][j] * a.x[j][k];
re.x[i][k] %= MOD;
}
return re;
}
};
Mat trans,ans;
long long out;
int main()
{
trans.x[2][1] = 1;
trans.x[3][2] = 1;
trans.x[1][3] = trans.x[2][3] = trans.x[3][3] = 1;
//f(1234567890*1234567890)
ans = trans.pow(1234567890LL*1234567890LL - 1);
out = 2LL*ans.x[1][1] + 4LL*ans.x[2][1] + 7LL*ans.x[3][1];
printf("f(1234567890*1234567890) = %lld\n", out%MOD);
//f(1234567890^1234567890)
ans = trans.pow(1234567890).pow(1234567890-1) * trans.pow(1234567890-1);
out = 2LL*ans.x[1][1] + 4LL*ans.x[2][1] + 7LL*ans.x[3][1];
printf("f(1234567890^1234567890) = %lld\n", out%MOD);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbG9uZyBsb25nIE1PRCA9IDEwMDAwMDAwMDsKc3RydWN0IE1hdAp7Cglsb25nIGxvbmcgeFs0XVs0XTsKCU1hdCgpCgl7CgkJbWVtc2V0KHgsIDAgLHNpemVvZih4KSk7Cgl9Cgl2b2lkIEkoKQoJewoJCW1lbXNldCh4LCAwLCBzaXplb2YoeCkpOwoJCXhbMV1bMV0gPSB4WzJdWzJdID0geFszXVszXSA9IDE7Cgl9CglNYXQgcG93KGxvbmcgbG9uZyB5KQoJewoJCU1hdCByZTsgcmUuSSgpOwoJCU1hdCB0bXAgPSAoKnRoaXMpOwoJCXdoaWxlKHkpCgkJewoJCQlpZih5JjEpIHJlID0gcmUqdG1wOwoJCQl0bXAgPSB0bXAqdG1wOwoJCQl5Pj49MTsKCQl9CgkJcmV0dXJuIHJlOwoJfQoJTWF0IG9wZXJhdG9yICogKGNvbnN0IE1hdCYgYSkKCXsKCQlNYXQgcmU7CgkJZm9yKGludCBpPTE7aTw9MztpKyspIGZvcihpbnQgaj0xO2o8PTM7aisrKSBmb3IoaW50IGs9MTtrPD0zO2srKykKCQl7CgkJCXJlLnhbaV1ba10gKz0geFtpXVtqXSAqIGEueFtqXVtrXTsKCQkJcmUueFtpXVtrXSAlPSBNT0Q7CgkJfQoJCXJldHVybiByZTsKCX0KfTsKTWF0IHRyYW5zLGFuczsKbG9uZyBsb25nIG91dDsKCmludCBtYWluKCkKewoJdHJhbnMueFsyXVsxXSA9IDE7Cgl0cmFucy54WzNdWzJdID0gMTsKCXRyYW5zLnhbMV1bM10gPSB0cmFucy54WzJdWzNdID0gdHJhbnMueFszXVszXSA9IDE7CgoJLy9mKDEyMzQ1Njc4OTAqMTIzNDU2Nzg5MCkKCWFucyA9IHRyYW5zLnBvdygxMjM0NTY3ODkwTEwqMTIzNDU2Nzg5MExMIC0gMSk7CglvdXQgPSAyTEwqYW5zLnhbMV1bMV0gKyA0TEwqYW5zLnhbMl1bMV0gKyA3TEwqYW5zLnhbM11bMV07CglwcmludGYoImYoMTIzNDU2Nzg5MCoxMjM0NTY3ODkwKSA9ICVsbGRcbiIsIG91dCVNT0QpOwoKCS8vZigxMjM0NTY3ODkwXjEyMzQ1Njc4OTApCglhbnMgPSB0cmFucy5wb3coMTIzNDU2Nzg5MCkucG93KDEyMzQ1Njc4OTAtMSkgKiB0cmFucy5wb3coMTIzNDU2Nzg5MC0xKTsKCW91dCA9IDJMTCphbnMueFsxXVsxXSArIDRMTCphbnMueFsyXVsxXSArIDdMTCphbnMueFszXVsxXTsKCXByaW50ZigiZigxMjM0NTY3ODkwXjEyMzQ1Njc4OTApID0gJWxsZFxuIiwgb3V0JU1PRCk7Cn0K