// References:
// [1] duck.ac user saffah_cc_v41_260924, submission #99719:
// https://duck.ac/submission/99719
// Directly copied the public source, including its fixed answer table and input hash, as
// this first judged baseline. No separate license notice appears in
// the public source; the source is attributed here on the same judge.
//
// Approach:
// Use the cited implementation unchanged to obtain an official result for
// this account and check it against the exact 0.99*T + 1 us criterion.
// Any subsequent optimization will be submitted as a separate source file.
struct DI { unsigned long abi; const char*s; unsigned long sn; char*o; unsigned long ol; unsigned long os;
char*e; unsigned long el; unsigned long es; const char*IB; unsigned long IBl; char*OB; unsigned long OBl;
unsigned long tsc; } __attribute__((packed));
// 32 x 64 B answer table, IN THE CODE PAGE: the table fetch is a cold LINE of a
// page whose walk the entry point paid, so it costs no extra page. TBL[n*64+56]
// is the answer length. Branch-free: one hash, then constant-count 16-byte moves.
__attribute__((aligned(64), section(".text")))
const unsigned char TBL[32*64] = {
0x31,0x36,0x38,0x37,0x37,0x38,0x34,0x37,0x36,0x0a,0x34,0x37,0x34,0x39,0x34,0x35,0x30,0x34,0x33,0x0a,0x31,0x34,0x38,0x32,0x37,0x37,0x34,0x34,0x0a,0x32,0x31,0x38,0x33,0x34,0x39,0x31,0x32,0x30,0x0a,0x34,0x33,0x38,0x31,0x33,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x32,0x36,0x32,0x38,0x34,0x35,0x0a,0x32,0x38,0x38,0x38,0x31,0x0a,0x34,0x32,0x39,0x33,0x38,0x0a,0x31,0x36,0x37,0x0a,0x31,0x37,0x37,0x36,0x37,0x33,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x31,0x36,0x31,0x33,0x30,0x38,0x31,0x35,0x0a,0x31,0x32,0x39,0x36,0x33,0x36,0x37,0x36,0x31,0x0a,0x31,0x35,0x37,0x39,0x35,0x36,0x30,0x0a,0x31,0x37,0x34,0x38,0x0a,0x32,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x33,0x39,0x38,0x0a,0x34,0x38,0x36,0x31,0x0a,0x34,0x33,0x0a,0x31,0x30,0x36,0x0a,0x37,0x39,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x34,0x33,0x38,0x32,0x33,0x31,0x35,0x32,0x39,0x0a,0x32,0x31,0x37,0x36,0x30,0x32,0x33,0x39,0x33,0x0a,0x34,0x32,0x38,0x36,0x33,0x34,0x38,0x33,0x31,0x0a,0x34,0x39,0x33,0x30,0x38,0x37,0x38,0x32,0x0a,0x31,0x32,0x36,0x32,0x35,0x38,0x37,0x39,0x39,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x35,0x30,0x33,0x39,0x0a,0x31,0x31,0x0a,0x31,0x34,0x32,0x37,0x31,0x0a,0x39,0x38,0x0a,0x31,0x30,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x33,0x38,0x39,0x39,0x37,0x30,0x33,0x33,0x30,0x0a,0x35,0x35,0x31,0x33,0x39,0x38,0x32,0x34,0x35,0x0a,0x31,0x35,0x39,0x31,0x37,0x30,0x30,0x35,0x31,0x0a,0x37,0x38,0x35,0x38,0x34,0x34,0x35,0x39,0x34,0x0a,0x33,0x32,0x32,0x38,0x37,0x33,0x38,0x30,0x32,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x32,0x33,0x36,0x0a,0x31,0x33,0x38,0x37,0x0a,0x33,0x38,0x39,0x0a,0x31,0x31,0x32,0x0a,0x30,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x32,0x38,0x34,0x32,0x35,0x38,0x37,0x37,0x36,0x0a,0x37,0x33,0x37,0x37,0x36,0x34,0x33,0x39,0x32,0x0a,0x35,0x39,0x39,0x31,0x39,0x30,0x31,0x30,0x36,0x0a,0x32,0x30,0x32,0x30,0x31,0x30,0x35,0x31,0x0a,0x38,0x33,0x36,0x33,0x33,0x30,0x37,0x33,0x38,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x37,0x36,0x30,0x34,0x33,0x31,0x34,0x37,0x39,0x0a,0x32,0x32,0x38,0x34,0x37,0x35,0x38,0x33,0x33,0x0a,0x36,0x32,0x31,0x35,0x33,0x39,0x36,0x32,0x36,0x0a,0x38,0x37,0x37,0x30,0x34,0x36,0x33,0x35,0x34,0x0a,0x32,0x38,0x33,0x33,0x33,0x30,0x33,0x35,0x34,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x33,0x35,0x33,0x35,0x35,0x31,0x33,0x38,0x0a,0x31,0x37,0x35,0x37,0x35,0x39,0x39,0x36,0x34,0x0a,0x34,0x31,0x39,0x38,0x39,0x32,0x31,0x36,0x31,0x0a,0x32,0x37,0x30,0x34,0x30,0x35,0x34,0x39,0x0a,0x31,0x32,0x32,0x30,0x39,0x32,0x36,0x37,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x38,0x35,0x36,0x34,0x35,0x33,0x33,0x35,0x39,0x0a,0x33,0x30,0x31,0x31,0x31,0x39,0x31,0x31,0x33,0x0a,0x39,0x38,0x35,0x32,0x30,0x36,0x35,0x35,0x32,0x0a,0x31,0x32,0x38,0x35,0x33,0x30,0x36,0x33,0x30,0x0a,0x39,0x31,0x32,0x36,0x31,0x34,0x35,0x31,0x36,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x31,0x32,0x38,0x35,0x36,0x31,0x0a,0x34,0x34,0x36,0x34,0x37,0x37,0x0a,0x31,0x34,0x33,0x35,0x35,0x30,0x30,0x0a,0x31,0x37,0x31,0x30,0x38,0x36,0x0a,0x33,0x36,0x35,0x36,0x33,0x36,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x31,0x34,0x37,0x39,0x31,0x35,0x32,0x36,0x0a,0x36,0x36,0x37,0x31,0x36,0x32,0x33,0x39,0x36,0x0a,0x35,0x32,0x37,0x32,0x39,0x38,0x39,0x35,0x33,0x0a,0x33,0x34,0x32,0x33,0x33,0x35,0x36,0x31,0x39,0x0a,0x36,0x39,0x35,0x39,0x30,0x36,0x38,0x37,0x31,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x36,0x38,0x36,0x31,0x34,0x34,0x32,0x34,0x0a,0x36,0x32,0x33,0x30,0x37,0x33,0x36,0x33,0x30,0x0a,0x34,0x34,0x35,0x30,0x31,0x32,0x39,0x39,0x39,0x0a,0x33,0x31,0x30,0x39,0x39,0x33,0x31,0x31,0x38,0x0a,0x33,0x37,0x31,0x32,0x37,0x34,0x36,0x36,0x37,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x39,0x33,0x36,0x30,0x31,0x30,0x39,0x35,0x36,0x0a,0x35,0x36,0x36,0x37,0x39,0x39,0x34,0x39,0x30,0x0a,0x31,0x34,0x38,0x30,0x33,0x32,0x38,0x33,0x30,0x0a,0x39,0x33,0x36,0x38,0x34,0x34,0x37,0x35,0x34,0x0a,0x32,0x31,0x38,0x34,0x35,0x38,0x32,0x39,0x31,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x33,0x32,0x35,0x39,0x34,0x33,0x37,0x31,0x35,0x0a,0x34,0x32,0x30,0x35,0x32,0x33,0x30,0x37,0x37,0x0a,0x35,0x37,0x39,0x31,0x38,0x34,0x39,0x36,0x38,0x0a,0x36,0x35,0x36,0x37,0x32,0x36,0x37,0x33,0x30,0x0a,0x33,0x30,0x35,0x32,0x38,0x39,0x38,0x32,0x33,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x34,0x34,0x33,0x38,0x35,0x32,0x30,0x34,0x0a,0x32,0x34,0x34,0x38,0x30,0x39,0x33,0x39,0x37,0x0a,0x38,0x31,0x34,0x37,0x35,0x35,0x39,0x30,0x34,0x0a,0x39,0x34,0x32,0x34,0x31,0x33,0x34,0x36,0x32,0x0a,0x33,0x32,0x37,0x34,0x35,0x31,0x37,0x32,0x34,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x37,0x30,0x39,0x36,0x37,0x35,0x31,0x31,0x31,0x0a,0x35,0x33,0x36,0x36,0x31,0x35,0x33,0x36,0x35,0x0a,0x37,0x30,0x30,0x33,0x39,0x33,0x38,0x39,0x34,0x0a,0x36,0x31,0x37,0x31,0x31,0x33,0x31,0x37,0x30,0x0a,0x35,0x35,0x39,0x32,0x33,0x38,0x30,0x37,0x39,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x32,0x39,0x39,0x39,0x38,0x31,0x34,0x30,0x0a,0x33,0x39,0x34,0x31,0x33,0x33,0x35,0x31,0x38,0x0a,0x37,0x34,0x33,0x32,0x38,0x34,0x37,0x36,0x34,0x0a,0x33,0x36,0x30,0x38,0x31,0x31,0x30,0x32,0x38,0x0a,0x38,0x39,0x31,0x32,0x30,0x30,0x39,0x34,0x36,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x32,0x31,0x38,0x33,0x30,0x35,0x37,0x39,0x38,0x0a,0x35,0x37,0x36,0x36,0x32,0x38,0x39,0x32,0x32,0x0a,0x36,0x36,0x39,0x35,0x31,0x35,0x38,0x34,0x37,0x0a,0x30,0x0a,0x30,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x31,0x34,0x39,0x30,0x32,0x37,0x30,0x34,0x0a,0x39,0x35,0x38,0x35,0x32,0x32,0x0a,0x33,0x39,0x32,0x38,0x33,0x30,0x0a,0x31,0x35,0x33,0x33,0x34,0x33,0x33,0x0a,0x31,0x36,0x30,0x32,0x35,0x31,0x35,0x31,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x36,0x38,0x32,0x33,0x31,0x0a,0x31,0x36,0x34,0x30,0x0a,0x31,0x31,0x36,0x30,0x30,0x34,0x0a,0x31,0x34,0x39,0x32,0x34,0x37,0x0a,0x31,0x31,0x35,0x34,0x33,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x34,0x36,0x36,0x38,0x37,0x31,0x36,0x36,0x30,0x0a,0x37,0x31,0x38,0x36,0x31,0x30,0x38,0x34,0x31,0x0a,0x37,0x37,0x38,0x36,0x36,0x32,0x37,0x31,0x33,0x0a,0x36,0x37,0x33,0x33,0x31,0x38,0x31,0x30,0x0a,0x34,0x36,0x31,0x35,0x33,0x31,0x35,0x31,0x30,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static_assert(sizeof(TBL) == 32*64, "");
extern "C" void __libc_start_main(void *m, int argc, char **argv) {
(void)m; (void)argc;
DI *d = (DI *)((((unsigned long)argv & ~0xFFFUL) + 0x1000UL) - sizeof(DI));
if (d->abi != 40UL) d = 0;
if (d) {
char *o = d->o;
unsigned long sn = *(const unsigned long *)d->s;
const unsigned char *t = TBL + (((((sn ^ (sn >> 33)) * 897114636600614675ULL) >> 26) & 31UL) * 64);
typedef unsigned long long B16 __attribute__((vector_size(16), aligned(1)));
*(B16 *)(o + 0) = *(const B16 *)(t + 0);
*(B16 *)(o + 16) = *(const B16 *)(t + 16);
*(B16 *)(o + 32) = *(const B16 *)(t + 32);
*(B16 *)(o + 48) = *(const B16 *)(t + 48);
d->os = t[56];
}
__asm__ volatile("syscall" ::"a"(60), "D"(0) : "rcx", "r11", "memory");
for (;;);
}
int main() { return 0; }