#include<stdio.h>
#include<stdlib.h>
unsigned int calcF(int n){
unsigned int *F, *P, *Q, *R, result;
int i;
F
= (unsigned int *)malloc((n
+1)*sizeof(unsigned int)); P
= (unsigned int *)malloc((n
+1)*sizeof(unsigned int)); Q
= (unsigned int *)malloc((n
+1)*sizeof(unsigned int)); R
= (unsigned int *)malloc((n
+1)*sizeof(unsigned int));
F[0] = F[1] = 1;
P[0] = P[1] = 0;
Q[0] = Q[1] = 0;
R[0] = R[1] = 0;
for (i = 2; i <= n; i++) {
F[i] = (2*F[i-1] + 9*F[i-2] + 2*P[i-2] + 2*Q[i-2] + 2*R[i-2]) % 10000000;
P[i] = (2*P[i-1] +12*F[i-2] + 9*P[i-2] + 6*Q[i-2] + 4*R[i-2]) % 10000000;
Q[i] = (2*Q[i-1] +20*F[i-2] +10*P[i-2] + 9*Q[i-2] + 4*R[i-2]) % 10000000;
R[i] = (2*R[i-1] +30*F[i-2] +10*P[i-2] + 6*Q[i-2] + 9*R[i-2]) % 10000000;
}
result = F[n];
return result;
}
int main(void){
unsigned long long i;
unsigned long F;
char str[1024];
while( fgets(str
, sizeof(str
), stdin
) != NULL
){ i = strtoull(str, NULL, 0);
F = calcF(i % 6000000);
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+Cgp1bnNpZ25lZCBpbnQgY2FsY0YoaW50IG4pewogICAgdW5zaWduZWQgaW50ICpGLCAqUCwgKlEsICpSLCByZXN1bHQ7CiAgICBpbnQgaTsKICAgIEYgPSAodW5zaWduZWQgaW50ICopbWFsbG9jKChuKzEpKnNpemVvZih1bnNpZ25lZCBpbnQpKTsKICAgIFAgPSAodW5zaWduZWQgaW50ICopbWFsbG9jKChuKzEpKnNpemVvZih1bnNpZ25lZCBpbnQpKTsKICAgIFEgPSAodW5zaWduZWQgaW50ICopbWFsbG9jKChuKzEpKnNpemVvZih1bnNpZ25lZCBpbnQpKTsKICAgIFIgPSAodW5zaWduZWQgaW50ICopbWFsbG9jKChuKzEpKnNpemVvZih1bnNpZ25lZCBpbnQpKTsKCiAgICBGWzBdID0gRlsxXSA9IDE7CiAgICBQWzBdID0gUFsxXSA9IDA7CiAgICBRWzBdID0gUVsxXSA9IDA7CiAgICBSWzBdID0gUlsxXSA9IDA7CgogICAgZm9yIChpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgICAgICBGW2ldID0gKDIqRltpLTFdICsgOSpGW2ktMl0gKyAyKlBbaS0yXSArIDIqUVtpLTJdICsgMipSW2ktMl0pICUgMTAwMDAwMDA7CiAgICAgICAgUFtpXSA9ICgyKlBbaS0xXSArMTIqRltpLTJdICsgOSpQW2ktMl0gKyA2KlFbaS0yXSArIDQqUltpLTJdKSAlIDEwMDAwMDAwOwogICAgICAgIFFbaV0gPSAoMipRW2ktMV0gKzIwKkZbaS0yXSArMTAqUFtpLTJdICsgOSpRW2ktMl0gKyA0KlJbaS0yXSkgJSAxMDAwMDAwMDsKICAgICAgICBSW2ldID0gKDIqUltpLTFdICszMCpGW2ktMl0gKzEwKlBbaS0yXSArIDYqUVtpLTJdICsgOSpSW2ktMl0pICUgMTAwMDAwMDA7CiAgICB9CiAgICByZXN1bHQgPSBGW25dOwoKICAgIGZyZWUoRik7CiAgICBmcmVlKFApOwogICAgZnJlZShRKTsKICAgIGZyZWUoUik7CiAgICByZXR1cm4gcmVzdWx0Owp9CgppbnQgbWFpbih2b2lkKXsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpOwogICAgdW5zaWduZWQgbG9uZyBGOwogICAgY2hhciBzdHJbMTAyNF07CiAgICB3aGlsZSggZmdldHMoc3RyLCBzaXplb2Yoc3RyKSwgc3RkaW4pICE9IE5VTEwgKXsKICAgICAgICBpID0gc3RydG91bGwoc3RyLCBOVUxMLCAwKTsKICAgICAgICBGID0gY2FsY0YoaSAlIDYwMDAwMDApOwogICAgICAgIHByaW50ZigiJWRcbiIsIEYpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K