const uint t[]={0x2f00576f,0x33f2daf7,0x3b3e892f,0x341ab0cd,0x38fce4f6,0x2c0c8121,0x36653813,0x1de2677e,0x25455a65,0x3bc4bab6,0x62e85d3a,0x339f30cb,0x00e601a0,0x1b42071d,0x0160b0cc,0x2545c17d,0x42927f2b,0x0173e843,0x42a04f69,0x1bae3b23,0x7ae9f5d3,0x7ad81060,0x47bc061a,0x5645fb02,0x45d57c0b,0x0097e1a0,0x1b421353,0x42b99370,0x3e054431,0x3d6193f0,0x407f4b63,0x7aea1ee6,0x7d973b1b,0x00d84751,0x39326e16,0x874b0f62,0x0772bf37,0x0a5151d7,0x13d7e2f3,0x114613ea,0x2c118dd1,0x027939a6,0x09ebf6a8,0x0a032f51,0x0a5104a9,0x0eecb4b2,0x0772a631,0x0cc250ea,0x07996b42,0x114dc95a,0x114f72f3,0x09eba745,0x2c11bd53,0x0a514fa9,0x07e08337,0x0ec63a62,0x114dc9a8,0x13b0d393,0x11559b85,0x2c1159a3,0x0ee64436,0x2c291541,0x113677a2,0x02b833d1,0x18f74ff2,0x02fe0548,0x18818ea5,0x0789fe29,0x02fe6a35,0x07631ef2,0x075b7fa2,0x16860542,0x078a7952,0x13a03a85,0x2c01ba9a,0x1136a9a2,0x09e38ce1,0x2c09a341,0x18a966a4,0x09d49a58,0x18f6d2a2,0x112ebcf2,0x076b6c31,0x02fdebf5,0x02a82e02,0x0ebe5342,0x1146c387,0x16317434,0x0a036249,0x2c11a4a3,0x1601cfa7,0x0ef4b8d8,0x1685ebf8,0x02a8ac92,0x0eece74a,0x0a50d2a6,0x04fa51a1,0x2c01ee23,0x09d469a2,0x04f29be4,0x2c11a6d4,0x056eed83,0x163064a8,0x0c3d9a39,0x14156997,0x0f330549,0x078b73e3,0x161232a4,0x04f98a02,0x09dd32a7,0x111f4fe2,0x09d46b26,0x0ed6a343,0x0501a68a,0x2c0281a6,0x13d63af2,0x0edd7993,0x16863838,0x0c4d24a8,0x079231e2,0x139851e2,0x04f1d4d3,0x13a90483,0x189976aa,0x02fe1df7,0x02bf8502,0x1899a856,0x188332f2,0x04ea3451,0x075c92a4,0x04f98962,0x078a6041,0x0f336948,0x0ef452b2,0x09cc8131,0x05ed73a1,0x4111eed9,0x51614632,0x45635a8e,0x0ed2fdf0,0x81947bad,0x7d5f597c,0x94fd688e,0x983ee7f3,0x02a3073d,0x517e2ec2,0x139ad402,0x0671bf5d,0x99ecd26d,0x9bbbb73b,0x06e6ef71,0x04f029a9,0xa20f13fe,0x4630f482,0x502ba2d7,0x96cc80bc,0x49a96d10,0x979fb095,0x976e403b,0x0673c6e1,0x474477fc,0x517e2f12,0x139ad093,0x0290ccfd,0x51693f03,0x1058b019,0x34323021,0x10373fb5,0x7d639590,0x21cbabd1,0x7ceeda59,0x0402d3f1,0x4a0e465c,0x8c282f63,0x89bcc654,0x2b5b4235,0x12a7f168,0x78003b79,0x5180ebb6,0x4fc1d6ed,0x88298e98,0x91cd7f00,0x9772a5e4,0xa96abfb2,0x53020000} b=171; uint magic_number_L_plus_b= 2205; uint magic_number_L= 2034; const uint R[]={0,234663,68679,2265159,3280003,5348,7376003,3185831,233604,6592806,6600966,2234534,34023,6182,8665390,6601774,4267074,301257,65,6330631,1088809,6210,337920,4262980,7642145,206118,3312673,72774,1049633,133250,2130978,3319079,1116225,229600,2240642,5286,6587686,6337838,3312809,6595878,2270697,585393,11512810,12923174,11953,33831,272866,7407687,7465,33826,5282,131202,32,166048,3179555,3213379,18157905,567428,567426,72768,7168,1118273,72955190,4260932,9570592,211030020,131200,266305,7375911,306601};