#include <iostream>
#define MIN(a,b) ((a)<(b)?(a):(b))
using namespace std;
long long D = 1000000;
int c[1000000];
long long Solve(long long n) {
int a = 1, p = 0, q = 0, r = 0, s = 0;
for (int i = 0; i < D; i++) c[i] = -1;
for (;; p ++) {
if (c[a] != -1) break;
c[a] = p;
a = (a * 16) % D;
}
q = c[a];
p -= q;
s = a;
cout << "数列 a(n)=16^n mod 10^6 は, n=" << q << " 以降, 周期 " << p << " で循環する." << endl;
cout << "つまり, a(n+" << p << ") = a(n) (ただし, n≧" << q << ")." << endl;
for (int i = 0; i < p; i++) {
r = (r + a) % D;
a = (a * 16) % D;
}
cout << "a(" << q << ") から a(" << q << "+" << p << ") までの和 mod 10^6 は " << r << endl;
long long answer = 0;
for (int i = 0, a = 1; i < MIN(n,q); i++) {
answer = (answer + a) % D;
a = (a * 16) % D;
}
answer += ((n - q) / p) * r;
for (int i = 0; i < (n - q) % p; i++) {
answer = (answer + s) % D;
s = (s * 16) % D;
}
return (answer * 10) % D;
}
int main(int argc, char *argv[])
{
cout.precision(16);
long long n;
cin >> n;
cout << Solve(n) << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIE1JTihhLGIpCQkoKGEpPChiKT8oYSk6KGIpKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwpsb25nIGxvbmcgRCA9IDEwMDAwMDA7CmludCBjWzEwMDAwMDBdOwoKbG9uZyBsb25nIFNvbHZlKGxvbmcgbG9uZyBuKSB7CglpbnQgYSA9IDEsIHAgPSAwLCBxID0gMCwgciA9IDAsIHMgPSAwOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBEOyBpKyspIGNbaV0gPSAtMTsKCWZvciAoOzsgcCArKykgewoJCWlmIChjW2FdICE9IC0xKSBicmVhazsKCQljW2FdID0gcDsKCQlhID0gKGEgKiAxNikgJSBEOwoJfQoJcSA9IGNbYV07CglwIC09IHE7CglzID0gYTsKCWNvdXQgPDwgIuaVsOWIlyBhKG4pPTE2Xm4gbW9kIDEwXjYg44GvLCBuPSIgPDwgcSA8PCAiIOS7pemZjSwg5ZGo5pyfICIgPDwgcCA8PCAiIOOBp+W+queSsOOBmeOCiy4iIDw8IGVuZGw7Cgljb3V0IDw8ICLjgaTjgb7jgoosIGEobisiIDw8IHAgPDwgIikgPSBhKG4pICjjgZ/jgaDjgZcsIG7iiaciIDw8IHEgPDwgIikuIiA8PCBlbmRsOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBwOyBpKyspIHsKCQlyID0gKHIgKyBhKSAlIEQ7CgkJYSA9IChhICogMTYpICUgRDsKCX0KCWNvdXQgPDwgImEoIiA8PCBxIDw8ICIpIOOBi+OCiSBhKCIgPDwgcSA8PCAiKyIgPDwgcCA8PCAiKSDjgb7jgafjga7lkowgbW9kIDEwXjYg44GvICIgPDwgciA8PCBlbmRsOwoJbG9uZyBsb25nIGFuc3dlciA9IDA7Cglmb3IgKGludCBpID0gMCwgYSA9IDE7IGkgPCBNSU4obixxKTsgaSsrKSB7CgkJYW5zd2VyID0gKGFuc3dlciArIGEpICUgRDsKCQlhID0gKGEgKiAxNikgJSBEOwoJfQoJYW5zd2VyICs9ICgobiAtIHEpIC8gcCkgKiByOwoJZm9yIChpbnQgaSA9IDA7IGkgPCAobiAtIHEpICUgcDsgaSsrKSB7CgkJYW5zd2VyID0gKGFuc3dlciArIHMpICUgRDsKCQlzID0gKHMgKiAxNikgJSBEOwoJfQoJcmV0dXJuIChhbnN3ZXIgKiAxMCkgJSBEOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBjb3V0LnByZWNpc2lvbigxNik7CiAgICBsb25nIGxvbmcgbjsKICAgIGNpbiA+PiBuOwoKICAgIGNvdXQgPDwgU29sdmUobikgPDwgZW5kbDsKfQo=