#include<bits/stdc++.h>
#include <boost/multiprecision/cpp_int.hpp>
using boost::multiprecision::cpp_int;
using namespace std;
int32_t main() {
int start = clock();
int p = 8624;
cpp_int M;
bit_set(M, p);
M = M-1; // M = 2^p - 1;
cpp_int S;
S = 4;
while(p>2) {
S = pow(S, 2);
S -= 2;
S %= M;
p--;
}
// cout << S << endl;
int end = clock();
cout << "time: " << (end - start)/(double)(CLOCKS_PER_SEC)*1000 << " milliseconds\n";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGJvb3N0L211bHRpcHJlY2lzaW9uL2NwcF9pbnQuaHBwPgp1c2luZyBib29zdDo6bXVsdGlwcmVjaXNpb246OmNwcF9pbnQ7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQzMl90IG1haW4oKSB7CglpbnQgc3RhcnQgPSBjbG9jaygpOwoJaW50IHAgPSA4NjI0OwoJY3BwX2ludCBNOwoJYml0X3NldChNLCBwKTsKCU0gPSBNLTE7IC8vIE0gPSAyXnAgLSAxOwoJY3BwX2ludCBTOwoJUyA9IDQ7Cgl3aGlsZShwPjIpIHsKCSAgICAgICAgIFMgPSBwb3coUywgMik7CgkgICAgICAgICBTIC09IDI7CgkKCSAgICAgICAgIFMgJT0gTTsKCSAgICAgICAgIHAtLTsgICAgICAgICAKCX0KCS8vIGNvdXQgPDwgUyA8PCBlbmRsOwoJaW50IGVuZCA9IGNsb2NrKCk7Cgljb3V0IDw8ICJ0aW1lOiAiIDw8IChlbmQgLSBzdGFydCkvKGRvdWJsZSkoQ0xPQ0tTX1BFUl9TRUMpKjEwMDAgPDwgIiBtaWxsaXNlY29uZHNcbiI7Cgp9