diff --git a/.vscode/launch.json b/.vscode/launch.json index 48efcbc..e067aee 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -117,6 +117,25 @@ "args": [], "cwd": "${workspaceFolder}" }, + { + "type": "lldb", + "request": "launch", + "name": "Debug integration test 'to_exponential'", + "cargo": { + "args": [ + "test", + "--no-run", + "--test=to_exponential", + "--package=ryu-js" + ], + "filter": { + "name": "to_exponential", + "kind": "test" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, { "type": "lldb", "request": "launch", diff --git a/src/buffer/mod.rs b/src/buffer/mod.rs index 1c3f593..d80037d 100644 --- a/src/buffer/mod.rs +++ b/src/buffer/mod.rs @@ -117,6 +117,38 @@ impl Buffer { str::from_utf8_unchecked(slice) } } + + /// Print a floating point number into this buffer using the `Number.prototype.toExponential()` notation + /// and return a reference to its string representation within the buffer. + /// + /// The `precision` argument must be between `[0, 100]` inclusive, + /// If a values value that is greater than the max is passed in will be clamped to max. + /// + /// # Special cases + /// + /// This function formats NaN as the string "NaN", positive infinity as + /// "Infinity", and negative infinity as "-Infinity" to match the [ECMAScript specification][spec]. + /// + /// [spec]: https://tc39.es/ecma262/#sec-numeric-types-number-toexponential + #[inline] + #[cfg_attr(feature = "no-panic", no_panic)] + pub fn format_to_exponential(&mut self, f: F, precision: u8) -> &str { + let precision = precision.min(100); + + if f.is_nonfinite() { + return f.format_nonfinite(); + } + + unsafe { + let n = f.write_to_ryu_buffer_to_exponential( + precision, + self.bytes.as_mut_ptr().cast::(), + ); + debug_assert!(n <= self.bytes.len()); + let slice = slice::from_raw_parts(self.bytes.as_ptr().cast::(), n); + str::from_utf8_unchecked(slice) + } + } } impl Clone for Buffer { @@ -155,11 +187,15 @@ impl Float for f64 {} pub trait FloatToFixed: Sealed {} impl FloatToFixed for f64 {} +pub trait FloatToExponential: Sealed {} +impl FloatToExponential for f64 {} + pub trait Sealed: Copy { fn is_nonfinite(self) -> bool; fn format_nonfinite(self) -> &'static str; unsafe fn write_to_ryu_buffer(self, result: *mut u8) -> usize; unsafe fn write_to_ryu_buffer_to_fixed(self, fraction_digits: u8, result: *mut u8) -> usize; + unsafe fn write_to_ryu_buffer_to_exponential(self, presission: u8, result: *mut u8) -> usize; } impl Sealed for f32 { @@ -194,6 +230,11 @@ impl Sealed for f32 { unsafe fn write_to_ryu_buffer_to_fixed(self, _fraction_digits: u8, _result: *mut u8) -> usize { panic!("toFixed for f32 type is not implemented yet!") } + + #[inline] + unsafe fn write_to_ryu_buffer_to_exponential(self, _precision: u8, _result: *mut u8) -> usize { + panic!("toExponential for f32 type is not implemented yet!") + } } impl Sealed for f64 { @@ -228,4 +269,9 @@ impl Sealed for f64 { unsafe fn write_to_ryu_buffer_to_fixed(self, fraction_digits: u8, result: *mut u8) -> usize { raw::format64_to_fixed(self, fraction_digits, result) } + + #[inline] + unsafe fn write_to_ryu_buffer_to_exponential(self, precision: u8, result: *mut u8) -> usize { + raw::format64_to_exponential(self, precision, result) + } } diff --git a/src/lib.rs b/src/lib.rs index 305731c..ec2f474 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -91,6 +91,7 @@ pub use crate::buffer::{Buffer, Float, FloatToFixed}; /// Unsafe functions that mirror the API of the C implementation of Ryū. pub mod raw { + pub use crate::pretty::format64_to_exponential; pub use crate::pretty::format64_to_fixed; pub use crate::pretty::{format32, format64}; } diff --git a/src/pretty/mod.rs b/src/pretty/mod.rs index f69b932..4746270 100644 --- a/src/pretty/mod.rs +++ b/src/pretty/mod.rs @@ -11,6 +11,7 @@ use core::ptr; use no_panic::no_panic; pub mod to_fixed; +pub use to_fixed::format64_to_exponential; pub use to_fixed::format64_to_fixed; /// Print f64 to the given buffer and return number of bytes written. diff --git a/src/pretty/to_fixed/d2fixed_full_table.rs b/src/pretty/to_fixed/d2fixed_full_table.rs index 68e07f9..4168650 100644 --- a/src/pretty/to_fixed/d2fixed_full_table.rs +++ b/src/pretty/to_fixed/d2fixed_full_table.rs @@ -1,566 +1,4402 @@ -pub(crate) const TABLE_SIZE: usize = 3; - -pub(crate) const POW10_OFFSET: [u8; TABLE_SIZE] = [0, 2, 5]; +pub(crate) const TABLE_SIZE: usize = 64; #[rustfmt::skip] -pub(crate) const POW10_SPLIT: [[u64; 3]; 8] = [ - [ 1, 72057594037927936, 0], // 0 - [ 699646928636035157, 72057594, 0], // 1 - [ 1, 0, 256], // 2 - [11902091922964236229, 4722366482869, 0], // 3 - [ 6760415703743915872, 4722, 0], // 4 - [ 1, 0, 16777216], // 5 +pub(crate) const POW10_OFFSET: [u16; TABLE_SIZE] = [ + 0, 2, 5, 8, 12, 16, 21, 26, 32, 39, + 46, 54, 62, 71, 80, 90, 100, 111, 122, 134, + 146, 159, 173, 187, 202, 217, 233, 249, 266, 283, + 301, 319, 338, 357, 377, 397, 418, 440, 462, 485, + 508, 532, 556, 581, 606, 632, 658, 685, 712, 740, + 769, 798, 828, 858, 889, 920, 952, 984, 1017, 1050, + 1084, 1118, 1153, 1188 +]; - [13369850649504950658, 309485009821345068, 0], // 5 (+1 length) - [15151142278969419334, 309485009, 0], // 5 (+2 length) +#[rustfmt::skip] +pub(crate) static POW10_SPLIT: [[u64; 3]; 1224] = [ + [ 1, 72057594037927936, 0], + [ 699646928636035157, 72057594, 0], + [ 1, 0, 256], + [ 11902091922964236229, 4722366482869, 0], + [ 6760415703743915872, 4722, 0], + [ 1, 0, 16777216], + [ 13369850649504950658, 309485009821345068, 0], + [ 15151142278969419334, 309485009, 0], + [ 1, 0, 75511627776], + [ 4635408826454083567, 9437866644873197963, 1099], + [ 12367138975830625353, 20282409603651, 0], + [ 7555853734021184432, 20282, 0], + [ 1, 0, 250037927936], + [ 5171444645924616995, 699646928636035156, 72057594], + [ 16672297533003297786, 1329227995784915872, 0], + [ 14479142226848862515, 1329227995, 0], + [ 1, 0, 181645213696], + [ 12214193123817091081, 11902091922964236228, 114366482869], + [ 16592893013671929435, 6760415703743915871, 4722], + [ 4549827147718617003, 87112285931760, 0], + [ 5274510003815168971, 87112, 0], + [ 1, 0, 44724781056], + [ 9794971998307800535, 13369850649504950657, 209821345068], + [ 14720142899209240169, 15151142278969419333, 309485009], + [ 4300745446091561535, 5708990770823839524, 0], + [ 15197156861335443364, 5708990770, 0], + [ 1, 0, 139251286016], + [ 13484604155038683037, 4635408826454083566, 67670423947], + [ 8356963862052375699, 12367138975830625352, 58409603651], + [ 5850852848337610021, 7555853734021184431, 20282], + [ 2712780827214982050, 374144419156711, 0], + [ 7732076577307618052, 374144, 0], + [ 1, 0, 84280344576], + [ 17296309485351745867, 5171444645924616994, 160903807060], + [ 16598859101615853088, 16672297533003297785, 219784915872], + [ 7469952526870444257, 14479142226848862514, 1329227995], + [ 13531654022114669524, 6073184580144670117, 1], + [ 15757609704383306943, 24519928653, 0], + [ 9590990814237149590, 24, 0], + [ 1, 0, 196662132736], + [ 15408590707489433890, 12214193123817091080, 95899502532], + [ 18332056844289122710, 16592893013671929434, 240246646623], + [ 11114572877353986193, 4549827147718617002, 72285931760], + [ 1703393793997526525, 5274510003815168970, 87112], + [ 5082852056285196265, 1606938044258990, 0], + [ 816434266573722365, 1606938, 0], + [ 1, 0, 129530986496], + [ 5736523019264798742, 9794971998307800534, 69797980545], + [ 10129314776268243339, 14720142899209240168, 36233143877], + [ 16511595775483995364, 4300745446091561534, 50823839524], + [ 12367293405401453325, 15197156861335443363, 5708990770], + [ 16934621733248854291, 13078571300009428617, 5], + [ 10278280417769171336, 105312291668, 0], + [ 5760764486226151240, 105, 0], + [ 1, 0, 238731001856], + [ 4128368337188369761, 13484604155038683036, 72453031918], + [ 10240941003671005056, 8356963862052375698, 175317175368], + [ 17933378316822368251, 5850852848337610020, 231147060143], + [ 8346249813075698616, 2712780827214982049, 128419156711], + [ 15906203609160902695, 7732076577307618051, 374144], + [ 14525607416135386328, 6901746346790563, 0], + [ 6397156777364256320, 6901746, 0], + [ 1, 0, 34937634816], + [ 16798760952716600048, 17296309485351745866, 249899825954], + [ 2419982808370854967, 16598859101615853087, 50404946937], + [ 2922947087773078956, 7469952526870444256, 165733552434], + [ 15419220167069510190, 13531654022114669523, 77854221733], + [ 3452124642157173416, 15757609704383306942, 24519928653], + [ 5979700067267186899, 9590990814237149589, 24], + [ 4913998146922579597, 452312848583, 0], + [ 5771037749337678924, 452, 0], + [ 1, 0, 8835301376], + [ 3464734175350698519, 15408590707489433889, 90993782792], + [ 9334527711335850125, 18332056844289122709, 170602522202], + [ 7269882896518450106, 11114572877353986192, 202092341162], + [ 1372511258182263196, 1703393793997526524, 174275541962], + [ 7571228438575951046, 5082852056285196264, 26044258990], + [ 2992506536646070406, 816434266573722364, 1606938], + [ 524517896824344606, 29642774844752946, 0], + [ 15582941400898702773, 29642774, 0], + [ 1, 0, 214310977536], + [ 3846112492507251066, 5736523019264798741, 104549111254], + [ 16681117750123089487, 10129314776268243338, 62895095400], + [ 14986314536556547267, 16511595775483995363, 163670432318], + [ 2573712825027107389, 12367293405401453324, 137918027683], + [ 7504855874008324928, 16934621733248854290, 84557186697], + [ 9572138030626879787, 10278280417769171335, 105312291668], + [ 8520676959353394843, 5760764486226151239, 105], + [ 13448984662897903496, 1942668892225, 0], + [ 12338883700918130648, 1942, 0], + [ 1, 0, 156223799296], + [ 2517285787892561600, 4128368337188369760, 146555162524], + [ 4338831817635138103, 10240941003671005055, 36972170386], + [ 1561495325934523196, 17933378316822368250, 161452451108], + [ 12262635050079398786, 8346249813075698615, 3862277025], + [ 11144065765517284188, 15906203609160902694, 163787434755], + [ 1212260522471875711, 14525607416135386327, 242346790563], + [ 9695352922247418869, 6397156777364256319, 6901746], + [ 7227025834627242948, 127314748520905380, 0], + [ 9609008238705447829, 127314748, 0], + [ 1, 0, 74910662656], + [ 3609144142396852269, 16798760952716600047, 31131187530], + [ 11568848377382068865, 2419982808370854966, 224158453279], + [ 10068303578029323957, 2922947087773078955, 211835877600], + [ 11645070846862630231, 15419220167069510189, 190187140051], + [ 12449386705878485055, 3452124642157173415, 149324160190], + [ 15025619323517318418, 5979700067267186898, 199266388373], + [ 14996237555047131272, 4913998146922579596, 196312848583], + [ 10211005638256058413, 5771037749337678923, 452], + [ 1014743503555840530, 8343699359066, 0], + [ 12900897707145290678, 8343, 0], + [ 1, 0, 33187823616], + [ 4718003016239473662, 3464734175350698518, 149506025761], + [ 14865830648693666725, 9334527711335850124, 144394101141], + [ 14754517212823091778, 7269882896518450105, 252074403984], + [ 11113946551474911901, 1372511258182263195, 232410437116], + [ 1963520352638130630, 7571228438575951045, 252162224104], + [ 13342587341404964200, 2992506536646070405, 50028434172], + [ 6240392545013573291, 524517896824344605, 22844752946], + [ 14377490861349714758, 15582941400898702772, 29642774], + [ 1717863312631397839, 546812681195752981, 0], + [ 3611005143890591770, 546812681, 0], + [ 1, 0, 21208498176], + [ 13168252824351245504, 3846112492507251065, 138904285205], + [ 735883891883379688, 16681117750123089486, 227812409738], + [ 10609203866866106404, 14986314536556547266, 12139521251], + [ 12358191111890306470, 2573712825027107388, 18406839052], + [ 15229916368406413528, 7504855874008324927, 135518906642], + [ 7241424335568075942, 9572138030626879786, 71461906823], + [ 6049715868779871913, 8520676959353394842, 65729070919], + [ 2000548404719336762, 13448984662897903495, 150668892225], + [ 1410974761895205301, 12338883700918130647, 1942], + [ 16000132467694084868, 35835915874844, 0], + [ 16894908866816792556, 35835, 0], + [ 1, 0, 96136462336], + [ 589096329272056762, 2517285787892561599, 127235208544], + [ 7097729792403256904, 4338831817635138102, 250084648831], + [ 8553736750439287020, 1561495325934523195, 183664758778], + [ 2114152625261065696, 12262635050079398785, 38604121015], + [ 9817523680007641224, 11144065765517284187, 215065716774], + [ 13047215537500048015, 1212260522471875710, 63525586135], + [ 16755544192002345880, 9695352922247418868, 164391777855], + [ 6930119832670648356, 7227025834627242947, 60520905380], + [ 14560698131901886167, 9609008238705447828, 127314748], + [ 16408020927503338035, 2348542582773833227, 0], + [ 14274703510609809116, 2348542582, 0], + [ 1, 0, 239195652096], + [ 16428432973129962470, 3609144142396852268, 54627148527], + [ 3721112279790863774, 11568848377382068864, 171545803830], + [ 18032764903259620753, 10068303578029323956, 45631280555], + [ 18058455550468776079, 11645070846862630230, 167674882605], + [ 15692090139033993190, 12449386705878485054, 210814540455], + [ 389416944300619393, 15025619323517318417, 140812947666], + [ 12009691357260487293, 14996237555047131271, 75553539724], + [ 13494259174449809900, 10211005638256058412, 90055009355], + [ 18288583400616279877, 1014743503555840529, 151699359066], + [ 7216107869057472, 12900897707145290677, 8343], + [ 17237061291959073878, 153914086704665, 0], + [ 1599418782488783273, 153914, 0], + [ 1, 0, 22255763456], + [ 9565464987240335777, 4718003016239473661, 140805878294], + [ 857713933775880687, 14865830648693666724, 185799843980], + [ 4621617820081363356, 14754517212823091777, 155602488249], + [ 9630162611715632528, 11113946551474911900, 197106442651], + [ 9283986497984645815, 1963520352638130629, 133723303109], + [ 8981807745082630996, 13342587341404964199, 29338292357], + [ 18350140531565934622, 6240392545013573290, 180779405341], + [ 4411619033127524143, 14377490861349714757, 21093125556], + [ 1852297584111266889, 1717863312631397838, 9195752981], + [ 11746243463811666096, 3611005143890591769, 546812681], + [ 6335244004343789147, 10086913586276986678, 0], + [ 5109502367228239844, 10086913586, 0], + [ 1603272682579847821, 10, 0], + [ 1, 0, 121713852416], + [ 6609546910952910052, 13168252824351245503, 78039892345], + [ 3911171343112928288, 735883891883379687, 194575126094], + [ 5254510615100863555, 10609203866866106403, 60669938882], + [ 3881927570803887650, 12358191111890306469, 63825615420], + [ 6379348759607163190, 15229916368406413527, 42392558399], + [ 14595733737222406466, 7241424335568075941, 154327955754], + [ 14670223432002373542, 6049715868779871912, 135108449946], + [ 4045087795619708513, 2000548404719336761, 215076489095], + [ 12598467307137142718, 1410974761895205300, 28867368919], + [ 734704388050777108, 16000132467694084867, 251915874844], + [ 5682201693687285822, 16894908866816792555, 35835], + [ 11048712694145438788, 661055968790248, 0], + [ 17871025777010319485, 661055, 0], + [ 1, 0, 191031934976], + [ 15268761435931663695, 589096329272056761, 54384768703], + [ 5016238054648555438, 7097729792403256903, 59463698998], + [ 14236047313993899750, 8553736750439287019, 129114608443], + [ 6957759675154690848, 2114152625261065695, 91532209025], + [ 18439367135478514473, 9817523680007641223, 126707290971], + [ 8539004472540641041, 13047215537500048014, 244908319870], + [ 1908462039431738399, 16755544192002345879, 195375682548], + [ 714690453250792146, 6930119832670648355, 148789337027], + [ 13782189447673929633, 14560698131901886166, 11889480596], + [ 3584742913798803164, 16408020927503338034, 118773833227], + [ 4347581515245125291, 14274703510609809115, 2348542582], + [ 16836742268156371392, 6429475823218628948, 2], + [ 11764082328865615308, 43322963970, 0], + [ 5957633711383291746, 43, 0], + [ 1, 0, 44890587136], + [ 9917186842884466953, 16428432973129962469, 128201721900], + [ 4751011869809829335, 3721112279790863773, 180977558144], + [ 11068497969931435029, 18032764903259620752, 86978950836], + [ 17118056985122509954, 18058455550468776078, 62850669910], + [ 14607066080907684459, 15692090139033993189, 17021110334], + [ 11768892370493391107, 389416944300619392, 135651046673], + [ 4043396447647747170, 12009691357260487292, 44731525255], + [ 1670341095362518057, 13494259174449809899, 17991426092], + [ 3190817644167043165, 18288583400616279876, 181000391185], + [ 10425820027224322486, 7216107869057471, 25934422965], + [ 13139964660506311565, 17237061291959073877, 58086704665], + [ 2297772885416059937, 1599418782488783272, 153914], + [ 7677687919964523763, 2839213766779714, 0], + [ 14144589152747892828, 2839213, 0], + [ 1, 0, 253518544896], + [ 17069730341503660290, 9565464987240335776, 164046496765], + [ 18167423787163077107, 857713933775880686, 65250538404], + [ 3765746945827805904, 4621617820081363355, 156522052161], + [ 10241734342430761691, 9630162611715632527, 197503285916], + [ 13345717282537140784, 9283986497984645814, 103486904773], + [ 9313926784816939953, 8981807745082630995, 170994763111], + [ 550974205049535019, 18350140531565934621, 69239154346], + [ 4494692285504086222, 4411619033127524142, 206100413253], + [ 1134308559863725587, 1852297584111266888, 25636765134], + [ 17587558045116130233, 11746243463811666095, 54343434265], + [ 9817142032346161594, 6335244004343789146, 50276986678], + [ 6071944935834172568, 5109502367228239843, 10086913586], + [ 11564168293299416955, 1603272682579847820, 10], + [ 12458266507226064437, 186070713419, 0], + [ 1304432355328256915, 186, 0], + [ 1, 0, 191358304256], + [ 15946798815542087355, 6609546910952910051, 231212025023], + [ 12082566083831286138, 3911171343112928287, 35284847591], + [ 11449623684706196411, 5254510615100863554, 165210439715], + [ 17518743620362604446, 3881927570803887649, 215345825189], + [ 9451061563087633805, 6379348759607163189, 165791236311], + [ 13191114787623314926, 14595733737222406465, 168795274405], + [ 8367349876734474799, 14670223432002373541, 57219284648], + [ 6544253801674393507, 4045087795619708512, 180682964281], + [ 16113906253336597498, 12598467307137142717, 3039828404], + [ 10294087136797312392, 734704388050777107, 235308032771], + [ 9127173070014462803, 5682201693687285821, 232598951915], + [ 16266900839595484952, 11048712694145438787, 63968790248], + [ 3299745387370952632, 17871025777010319484, 661055], + [ 12061115182604399189, 12194330274671844, 0], + [ 5066801222582989646, 12194330, 0], + [ 1, 0, 185827721216], + [ 7568423425299591513, 15268761435931663694, 71271930809], + [ 16561505984665207377, 5016238054648555437, 235771737671], + [ 4329114621856906245, 14236047313993899749, 223377180907], + [ 1477500474861899139, 6957759675154690847, 135999600095], + [ 16891579639263969684, 18439367135478514472, 142462900359], + [ 4684451357140027420, 8539004472540641040, 151103457934], + [ 14727186580409080709, 1908462039431738398, 35038743447], + [ 15864176859687308834, 714690453250792145, 214747133987], + [ 1755486942842684438, 13782189447673929632, 50194329302], + [ 17417077516652710041, 3584742913798803163, 219235682866], + [ 4290982361913532783, 4347581515245125290, 84912721627], + [ 11826659981004351409, 16836742268156371391, 2637732180], + [ 932930645678090820, 11764082328865615307, 43322963970], + [ 12707792781328052617, 5957633711383291745, 43], + [ 16491596426880311906, 799167628880, 0], + [ 3092207065214166010, 799, 0], + [ 1, 0, 229537611776], + [ 8142946531605512550, 9917186842884466952, 157257552869], + [ 5328402096432654515, 4751011869809829334, 144600024477], + [ 1932004361303814512, 11068497969931435028, 142927971728], + [ 2511477647985517771, 17118056985122509953, 229791850638], + [ 17451375493324716694, 14607066080907684458, 128637992933], + [ 9489266854478998489, 11768892370493391106, 124219192960], + [ 8803053132063235169, 4043396447647747169, 235090549372], + [ 16198682197142616773, 1670341095362518056, 68172974571], + [ 13696242485403414202, 3190817644167043164, 191565184836], + [ 16409082426079859931, 10425820027224322485, 85712318911], + [ 11653410736879597610, 13139964660506311564, 168124562517], + [ 13589514120653213261, 2297772885416059936, 66416208296], + [ 8032934885905905774, 7677687919964523762, 173766779714], + [ 2753021350129449273, 14144589152747892827, 2839213], + [ 16974897459201404133, 52374249726338269, 0], + [ 13398576176159101589, 52374249, 0], + [ 1, 0, 160925351936], + [ 10284586955251725351, 17069730341503660289, 238984858016], + [ 5294476488634150891, 18167423787163077106, 155204141550], + [ 15833244538135063323, 3765746945827805903, 143555205531], + [ 10348512742273116664, 10241734342430761690, 182723472783], + [ 13658504610142595663, 13345717282537140783, 83504908982], + [ 11956362239240850266, 9313926784816939952, 29029868371], + [ 13415901703662731781, 550974205049535018, 46243657757], + [ 5161774027546852762, 4494692285504086221, 72061490990], + [ 15274384838790587711, 1134308559863725586, 175953423432], + [ 14233354597679374929, 17587558045116130232, 90532188335], + [ 4274656492162486921, 9817142032346161593, 227329160794], + [ 12040276505541795046, 6071944935834172567, 140626894819], + [ 13238307206256765457, 11564168293299416954, 75675363980], + [ 12850161204172713271, 12458266507226064436, 186070713419], + [ 17531777095001445154, 1304432355328256914, 186], + [ 5623628114515245990, 3432398830065, 0], + [ 7357116143579573377, 3432, 0], + [ 1, 0, 227864477696], + [ 3555734177475596582, 15946798815542087354, 31654997219], + [ 14001876724756424382, 12082566083831286137, 66620685343], + [ 18159905057231476140, 11449623684706196410, 33949692994], + [ 5585207679308509467, 17518743620362604445, 53512343073], + [ 13948697622866724672, 9451061563087633804, 65715091765], + [ 9807691927739036432, 13191114787623314925, 165453594945], + [ 15818010096140820918, 8367349876734474798, 96354764709], + [ 5629845624785010943, 6544253801674393506, 189873536608], + [ 9517635131137734707, 16113906253336597497, 19558043581], + [ 619338244618780585, 10294087136797312391, 61494785043], + [ 11632367007491958899, 9127173070014462802, 67881830461], + [ 12083314261009739916, 16266900839595484951, 124178879555], + [ 16880538609458881650, 3299745387370952631, 228653834364], + [ 17404223674486504228, 12061115182604399188, 26274671844], + [ 7089067015287185433, 5066801222582989645, 12194330], + [ 2592264228029443648, 224945689727159819, 0], + [ 13413731084370224440, 224945689, 0], + [ 1, 0, 78410285056], + [ 9323915941641553425, 7568423425299591512, 173897801038], + [ 12155831029092699564, 16561505984665207376, 229234681773], + [ 17397171276588232676, 4329114621856906244, 31080095461], + [ 11874560617553253769, 1477500474861899138, 40915694367], + [ 13444839516837727954, 16891579639263969683, 16253944616], + [ 16994416043584590671, 4684451357140027419, 30798362384], + [ 15879694502877015730, 14727186580409080708, 209859998750], + [ 4234647645735263359, 15864176859687308833, 160095165137], + [ 7978589901512919496, 1755486942842684437, 219944181664], + [ 6114237175390859894, 17417077516652710040, 170232614619], + [ 8658612872088282708, 4290982361913532782, 191641124522], + [ 10253813330683324853, 11826659981004351408, 203050574271], + [ 13289465061747830991, 932930645678090819, 97688890827], + [ 4123165538545565412, 12707792781328052616, 80894011233], + [ 7846417485927038481, 16491596426880311905, 31167628880], + [ 10562273346358018864, 3092207065214166009, 799], + [ 2691512658346619120, 14742040721959, 0], + [ 751187558544605998, 14742, 0], + [ 1, 0, 8441430016], + [ 3757709791947931308, 8142946531605512549, 214288853256], + [ 3452755398462519465, 5328402096432654514, 20104734166], + [ 3105818720159874523, 1932004361303814511, 129136147476], + [ 16859138458894499364, 2511477647985517770, 106946040961], + [ 12271894740606233755, 17451375493324716693, 2514414186], + [ 5429638071845793701, 9489266854478998488, 97477214466], + [ 145278150038876889, 8803053132063235168, 40878132321], + [ 9050266019724932450, 16198682197142616772, 92742474792], + [ 11907016253451490866, 13696242485403414201, 181889538140], + [ 2472757296513770735, 16409082426079859930, 140631732661], + [ 10558733798178239360, 11653410736879597609, 32736689036], + [ 15917322570831255850, 13589514120653213260, 242435466272], + [ 12254334656791355238, 8032934885905905773, 91149241586], + [ 7869542424662730262, 2753021350129449272, 221920211035], + [ 1378558986933000253, 16974897459201404132, 233726338269], + [ 13521405041909411105, 13398576176159101588, 52374249], + [ 3206744593298092012, 966134380754314586, 0], + [ 13914648122214918505, 966134380, 0], + [ 1, 0, 1557528576], + [ 1235541077112082496, 10284586955251725350, 242287014145], + [ 12014985518315533846, 5294476488634150890, 207858321906], + [ 1561535086344155741, 15833244538135063322, 218560993999], + [ 12761747276316224577, 10348512742273116663, 47740429018], + [ 9745594781103966137, 13658504610142595662, 176648155695], + [ 17514238702394846785, 11956362239240850265, 42727277488], + [ 2428898913707151713, 13415901703662731780, 205279820330], + [ 71666709959904945, 5161774027546852761, 18828026061], + [ 4049380135452919193, 15274384838790587710, 184771591698], + [ 18422240861777453733, 14233354597679374928, 185231729592], + [ 2914504416394425696, 4274656492162486920, 151652704697], + [ 12721377795748989418, 12040276505541795045, 122717650071], + [ 2626074459217717422, 13238307206256765456, 52696608634], + [ 4261529925046307655, 12850161204172713270, 146950399540], + [ 11536038685430305586, 17531777095001445153, 241304857490], + [ 12555757789435162768, 5623628114515245989, 104398830065], + [ 11905178684546080059, 7357116143579573376, 3432], + [ 14032797718924543051, 63316582777114, 0], + [ 10750340288005853484, 63316, 0], + [ 1, 0, 186192756736], + [ 9660290106216358253, 3555734177475596581, 121759043258], + [ 14820142034615351103, 14001876724756424381, 186984450425], + [ 12674041783707777619, 18159905057231476139, 157302774714], + [ 15386686816442679994, 5585207679308509466, 140756160413], + [ 5679510383719146248, 13948697622866724671, 237531676044], + [ 1391101719248678506, 9807691927739036431, 46857496045], + [ 3364596672173710517, 15818010096140820917, 162305194542], + [ 11276509210104319732, 5629845624785010942, 249515952034], + [ 5316312656902630164, 9517635131137734706, 135033574393], + [ 17470981304473644647, 619338244618780584, 82630591879], + [ 7373293636384920591, 11632367007491958898, 23655037778], + [ 7616810902585191937, 12083314261009739915, 183915095831], + [ 12740295655921903924, 16880538609458881649, 84943484855], + [ 18366635945916526940, 17404223674486504227, 77384299092], + [ 4472171448243407067, 7089067015287185432, 11140526925], + [ 229592460858185629, 2592264228029443647, 25727159819], + [ 12749672866417114996, 13413731084370224439, 224945689], + [ 9452256722867098693, 4149515568880992958, 0], + [ 16251451636418604634, 4149515568, 0], + [ 1, 0, 88505450496], + [ 4515791283442995454, 9323915941641553424, 80658968920], + [ 13306155670047701346, 12155831029092699563, 4943102544], + [ 4456930152933417601, 17397171276588232675, 130643721220], + [ 9089157128546489637, 11874560617553253768, 147728846210], + [ 12437332180345515840, 13444839516837727953, 27921269139], + [ 3433060408790452524, 16994416043584590670, 132860839963], + [ 8275594526021936172, 15879694502877015729, 33229560708], + [ 3846512444641107689, 4234647645735263358, 21432520225], + [ 6210962618469046250, 7978589901512919495, 152331453461], + [ 7272858906616296575, 6114237175390859893, 110469384344], + [ 3710743300451225347, 8658612872088282707, 176555860334], + [ 6424677242672030600, 10253813330683324852, 67720423344], + [ 11485842256170301862, 13289465061747830990, 136223517251], + [ 7355797963557024308, 4123165538545565411, 97425355144], + [ 6358188982569427273, 7846417485927038480, 249572581985], + [ 12475094728768767402, 10562273346358018863, 39145907193], + [ 17288154837907896183, 2691512658346619119, 150040721959], + [ 2983850577727105262, 751187558544605997, 14742], + [ 13918604635001185935, 271942652322184, 0], + [ 12033220395769876327, 271942, 0], + [ 1, 0, 101203705856], + [ 5782377197813462997, 3757709791947931307, 178187174245], + [ 17732139848231399226, 3452755398462519464, 111168366770], + [ 3628839527415562921, 3105818720159874522, 202913935727], + [ 3188692267613601004, 16859138458894499363, 149665260746], + [ 5168130193478377352, 12271894740606233754, 216294341269], + [ 12556227529405091290, 5429638071845793700, 96007875544], + [ 15087090312791441192, 145278150038876888, 196490615904], + [ 10281804758610642494, 9050266019724932449, 185645480644], + [ 14238177586158586580, 11907016253451490865, 218134048441], + [ 7107927498217678128, 2472757296513770734, 41572390106], + [ 3845814658485364450, 10558733798178239359, 76862879785], + [ 714293333681725946, 15917322570831255849, 109664308812], + [ 16766172658649116982, 12254334656791355237, 56426608749], + [ 812461421432632215, 7869542424662730261, 228074731832], + [ 15218024718633799196, 1378558986933000252, 148732996836], + [ 8110797782612805146, 13521405041909411104, 90173837972], + [ 15941193964933529227, 3206744593298092011, 108754314586], + [ 14144280602323277933, 13914648122214918504, 966134380], + [ 15072402647813125245, 17822033662586700072, 0], + [ 10822706091283369889, 17822033662, 0], + [ 15163844593710966731, 17, 0], + [ 1, 0, 38066978816], + [ 2408529687792073670, 1235541077112082495, 234651333670], + [ 3980682212356510808, 12014985518315533845, 26084650986], + [ 4202670442792148519, 1561535086344155740, 247691815706], + [ 9419583343154651922, 12761747276316224576, 78528309751], + [ 16359166491570434575, 9745594781103966136, 89949448782], + [ 12567727056384237385, 17514238702394846784, 4131670873], + [ 2068388267923286639, 2428898913707151712, 153003885060], + [ 5689135844565021196, 71666709959904944, 62219517337], + [ 3104061965171139313, 4049380135452919192, 80998671678], + [ 7955173880156328016, 18422240861777453732, 136157995600], + [ 1445179403240833754, 2914504416394425695, 229689627272], + [ 12538201164459126715, 12721377795748989417, 16142359781], + [ 7580606719088482667, 2626074459217717421, 54231018000], + [ 8168318283218819755, 4261529925046307654, 33625369910], + [ 5249615277755961676, 11536038685430305585, 165680648993], + [ 6312997372068219831, 12555757789435162767, 128645381029], + [ 9183815417025176703, 11905178684546080058, 26760719488], + [ 10683849953373876937, 14032797718924543050, 84582777114], + [ 17175012155615667568, 10750340288005853483, 63316], + [ 18003508288378896912, 1167984798111281, 0], + [ 14722554560950996951, 1167984, 0], + [ 1, 0, 37523685376], + [ 15059324482416394930, 9660290106216358252, 189803401509], + [ 4134778595813308312, 14820142034615351102, 171687061181], + [ 16321118342639660948, 12674041783707777618, 26834113963], + [ 1523550293123468805, 15386686816442679993, 63307886874], + [ 8016371634569878509, 5679510383719146247, 15075411775], + [ 9884220139611134110, 1391101719248678505, 181182395151], + [ 7218073002727840414, 3364596672173710516, 254611300789], + [ 16062235669481359233, 11276509210104319731, 50288197886], + [ 15558048660560338002, 5316312656902630163, 168947103794], + [ 8394398745765058609, 17470981304473644646, 114399707048], + [ 5693296366442904274, 7373293636384920590, 139412908146], + [ 11783494675061161358, 7616810902585191936, 113690652811], + [ 13377293110865447894, 12740295655921903923, 35995657329], + [ 12840734051093062130, 18366635945916526939, 24242436899], + [ 7009868331566697505, 4472171448243407066, 63012446232], + [ 5019690705031194477, 229592460858185628, 55691161151], + [ 8608277240439804984, 12749672866417114995, 190512407863], + [ 12172482590657749222, 9452256722867098692, 48880992958], + [ 16613484892678771990, 16251451636418604633, 4149515568], + [ 5721488662757049244, 2758075434182769113, 4], + [ 386931106438877039, 76545051729, 0], + [ 10054429752182825659, 76, 0], + [ 1, 0, 16244801536], + [ 8634592106137071313, 4515791283442995453, 171721328144], + [ 12626356501369830731, 13306155670047701345, 227241610667], + [ 4803333258178976933, 4456930152933417600, 136492724195], + [ 13613083223558209297, 9089157128546489636, 209674229128], + [ 16106967997237446989, 12437332180345515839, 78186106577], + [ 14832921244380020170, 3433060408790452523, 177448620878], + [ 13774024637717231397, 8275594526021936171, 126208519857], + [ 9673012968505228885, 3846512444641107688, 199336696958], + [ 5391832334264815667, 6210962618469046249, 117394262471], + [ 16514436292632703088, 7272858906616296574, 83201159797], + [ 12025036352783454153, 3710743300451225346, 180348282451], + [ 7059867105311401050, 6424677242672030599, 206622648756], + [ 12769210631552594670, 11485842256170301861, 227398758606], + [ 8328873878884556145, 7355797963557024307, 16344678115], + [ 1016565892414238685, 6358188982569427272, 47676276240], + [ 9662978461927250281, 12475094728768767401, 239937192751], + [ 13729967277551868112, 17288154837907896182, 45161754863], + [ 6371593776693359475, 2983850577727105261, 136754529069], + [ 17617208110845643245, 13918604635001185934, 70652322184], + [ 14960960225633086797, 12033220395769876326, 271942], + [ 12090634301321662558, 5016456510113118, 0], + [ 9409926148478635503, 5016456, 0], + [ 1, 0, 171313463296], + [ 4307062684900157136, 5782377197813462996, 168961261227], + [ 15300759383869911853, 17732139848231399225, 218196719784], + [ 16007534237643445447, 3628839527415562920, 35172859354], + [ 7138502295759677634, 3188692267613601003, 154280164899], + [ 8218537071653683708, 5168130193478377351, 164680674458], + [ 2254219416760329296, 12556227529405091289, 216817872804], + [ 3057410459568460683, 15087090312791441191, 97557377752], + [ 8217810929938874370, 10281804758610642493, 49771853153], + [ 11741126472498340929, 14238177586158586579, 238385321521], + [ 1175325363726654805, 7107927498217678127, 127208482030], + [ 9428843070696730900, 3845814658485364449, 41038721919], + [ 12662500978715131896, 714293333681725945, 101908896041], + [ 6443045597035184564, 16766172658649116981, 21044043621], + [ 1921385512639171183, 812461421432632214, 60824970773], + [ 10469475094355551399, 15218024718633799195, 32439687228], + [ 14679174489076953574, 8110797782612805145, 235864173856], + [ 11853074234719825644, 15941193964933529226, 104766762987], + [ 8270896886596139124, 14144280602323277932, 40817076584], + [ 16532667046659118126, 15072402647813125244, 254586700072], + [ 148341279888833483, 10822706091283369888, 17822033662], + [ 10364629296397276041, 15163844593710966730, 17], + [ 14265682585545771671, 328758493846, 0], + [ 13991741872911347878, 328, 0], + [ 1, 0, 63130566656], + [ 14029045786848724433, 2408529687792073669, 21215793215], + [ 4005878521026842341, 3980682212356510807, 92227827221], + [ 3428326338640386488, 4202670442792148518, 64510636636], + [ 1010001558294829380, 9419583343154651921, 184886832192], + [ 2012063724327403418, 16359166491570434574, 64681297848], + [ 10997154538851372612, 12567727056384237384, 96112127552], + [ 1917749645489607898, 2068388267923286638, 176308408672], + [ 9763872523711218805, 5689135844565021195, 152168271536], + [ 15875699078454059311, 3104061965171139312, 164431250840], + [ 10966529452671276106, 7955173880156328015, 95078343332], + [ 18073244132105736913, 1445179403240833753, 233679697247], + [ 4435241176994913173, 12538201164459126714, 173410945513], + [ 5464400086219074323, 7580606719088482666, 70442805421], + [ 2445909179323258812, 8168318283218819754, 49284582214], + [ 873962058644121211, 5249615277755961675, 143342228273], + [ 16675872194112650857, 6312997372068219830, 58497855631], + [ 10680102689274800355, 9183815417025176702, 74579172666], + [ 2370498083108897524, 10683849953373876936, 43931059274], + [ 15354400521451334666, 17175012155615667567, 49975972139], + [ 259991949657381021, 18003508288378896911, 112798111281], + [ 10335286558772966917, 14722554560950996950, 1167984], + [ 16337526653906757263, 21545516652742137, 0], + [ 12040967163702784894, 21545516, 0], + [ 1, 0, 108816367616], + [ 3373309160242342187, 15059324482416394929, 62224146796], + [ 13639841054510584221, 4134778595813308311, 82884769598], + [ 15898855427739708031, 16321118342639660947, 185082591826], + [ 4544387940067005419, 1523550293123468804, 7434568377], + [ 5281598644835398575, 8016371634569878508, 105535824647], + [ 13675642405083408835, 9884220139611134109, 180391292521], + [ 3973392623768015721, 7218073002727840413, 243870735540], + [ 4491285101509114191, 16062235669481359232, 19843403507], + [ 15002304272810270500, 15558048660560338001, 102455061267], + [ 17325098540619893468, 8394398745765058608, 14308634214], + [ 1137212864974584822, 5693296366442904273, 638784526], + [ 2619406097224859078, 11783494675061161357, 51725184512], + [ 8281347529729293732, 13377293110865447893, 91696097587], + [ 11344719666795450104, 12840734051093062129, 218380005723], + [ 17283870506679425783, 7009868331566697504, 156272117978], + [ 11054210518010603775, 5019690705031194476, 115466655644], + [ 6399455551799092885, 8608277240439804983, 68659871603], + [ 12930529916573967170, 12172482590657749221, 89900618820], + [ 14550097052337552404, 16613484892678771989, 217310162521], + [ 12487632712206414748, 5721488662757049243, 81020975577], + [ 5791017277843595715, 386931106438877038, 76545051729], + [ 10227264183449036113, 10054429752182825658, 76], + [ 2006055278511721441, 1412006979354, 0], + [ 128746359043876333, 1412, 0], + [ 1, 0, 253468082176], + [ 7408146306870995754, 8634592106137071312, 97684476157], + [ 8299024588195267962, 12626356501369830730, 128260389217], + [ 1497052939192040881, 4803333258178976932, 36737966720], + [ 16771714264265803747, 13613083223558209296, 63873160484], + [ 142988846654429432, 16106967997237446988, 43804094271], + [ 11839838367716104145, 14832921244380020169, 43746691371], + [ 6019646776647679765, 13774024637717231396, 232524375083], + [ 4611972391702034948, 9673012968505228884, 233292291816], + [ 16447182322205429545, 5391832334264815666, 126895249385], + [ 2113477168726764245, 16514436292632703087, 2651878526], + [ 3536261187802311516, 12025036352783454152, 135382716162], + [ 18444381860986709854, 7059867105311401049, 165692220295], + [ 4734315730275909838, 12769210631552594669, 51451509157], + [ 9974936316849658174, 8328873878884556144, 72055108147], + [ 11864423681540657642, 1016565892414238684, 169523831112], + [ 8207245621417902667, 9662978461927250280, 118744303017], + [ 7992526918695295028, 13729967277551868111, 237345404790], + [ 8679354522130259987, 6371593776693359474, 142955030765], + [ 6065763799692166461, 17617208110845643244, 102811035278], + [ 18143341109049024976, 14960960225633086796, 94655434598], + [ 15242492331283350570, 12090634301321662557, 136510113118], + [ 9986352353182266963, 9409926148478635502, 5016456], + [ 17340463289911536077, 92537289398950870, 0], + [ 7359344614214233035, 92537289, 0], + [ 1, 0, 212233486336], + [ 419091135888749535, 4307062684900157135, 57829455828], + [ 1073142712661309790, 15300759383869911852, 168867770169], + [ 11076438902195672286, 16007534237643445446, 235386978984], + [ 1820390940081322073, 7138502295759677633, 135445527787], + [ 18417808973944523597, 8218537071653683707, 217122201479], + [ 10251294197731582957, 2254219416760329295, 39165742553], + [ 1502394029870156428, 3057410459568460682, 61445488423], + [ 321014853559106075, 8217810929938874369, 211636487741], + [ 2390953058510591778, 11741126472498340928, 47063714515], + [ 10685224265907994087, 1175325363726654804, 225511138607], + [ 5967405799190505023, 9428843070696730899, 249686435553], + [ 11210723659228214761, 12662500978715131895, 53349278201], + [ 12327123641078462773, 6443045597035184563, 150104158517], + [ 1709976940107894237, 1921385512639171182, 27567551382], + [ 16607686590938553511, 10469475094355551398, 25795759643], + [ 18332088094272679457, 14679174489076953573, 138642556441], + [ 2946170632136780882, 11853074234719825643, 108448366218], + [ 4824449494694383419, 8270896886596139123, 124896237676], + [ 17008332258693407134, 16532667046659118125, 160008041596], + [ 1773419466622750661, 148341279888833482, 202561867680], + [ 3892343466023784379, 10364629296397276040, 150773344202], + [ 12001571085575422796, 14265682585545771670, 72758493846], + [ 12933506765500977582, 13991741872911347877, 328], + [ 11884830007749143734, 6064523798049, 0], + [ 9662368568096205337, 6064, 0], + [ 1, 0, 197760516096], + [ 16801499925276664442, 14029045786848724432, 87217159109], + [ 10492407990787637084, 4005878521026842340, 38185849943], + [ 7673849751013230269, 3428326338640386487, 17054752294], + [ 6046724489853072367, 1010001558294829379, 14109074193], + [ 3723941391207507903, 2012063724327403417, 72596156942], + [ 16844122108860347659, 10997154538851372611, 110103961416], + [ 10622020182694668027, 1917749645489607897, 11529300590], + [ 8741198820686854862, 9763872523711218804, 240860623371], + [ 6855480461211306807, 15875699078454059310, 79594496752], + [ 10005708458011566304, 10966529452671276105, 217979752527], + [ 8932093106442919061, 18073244132105736912, 186240434905], + [ 9062763476260756743, 4435241176994913172, 106296225722], + [ 13664977682032775521, 5464400086219074322, 170132593002], + [ 1078499125430623453, 2445909179323258811, 75047377578], + [ 6554586738078431161, 873962058644121210, 182904000843], + [ 12177313698643242883, 16675872194112650856, 126578969526], + [ 16615072271904633953, 10680102689274800354, 200128504958], + [ 16375404983106569285, 2370498083108897523, 111832363720], + [ 13552251831473522729, 15354400521451334665, 15014094191], + [ 8330500218412111874, 259991949657381020, 214560277007], + [ 7044338079053294004, 10335286558772966916, 249885659094], + [ 2688849443046530184, 16337526653906757262, 44652742137], + [ 855940991879596845, 12040967163702784893, 21545516], + [ 7344363609485825662, 397444631628981487, 0], + [ 11602660525134634992, 397444631, 0], + [ 1, 0, 177182867456], + [ 16945343208344873835, 3373309160242342186, 151739417265], + [ 9617992661337889145, 13639841054510584220, 147861878679], + [ 18280344933262742088, 15898855427739708030, 4246351763], + [ 5179975582362777795, 4544387940067005418, 236286316036], + [ 1798918997870037130, 5281598644835398574, 157741358060], + [ 6327667344756325883, 13675642405083408834, 157215398045], + [ 18380327574124007701, 3973392623768015720, 128243473053], + [ 18015447557304295289, 4491285101509114190, 81813276544], + [ 10315590748073249878, 15002304272810270499, 48939195473], + [ 7697916092577993382, 17325098540619893467, 209061648432], + [ 3124132817942110723, 1137212864974584821, 141141998289], + [ 7448238998520507049, 2619406097224859077, 213448932749], + [ 13892823322374205297, 8281347529729293731, 241614998485], + [ 11042137840046332564, 11344719666795450103, 32936960497], + [ 10513966307445593804, 17283870506679425782, 108599249952], + [ 9388437460943526958, 11054210518010603774, 55346915180], + [ 10967228614677896228, 6399455551799092884, 229700965431], + [ 2310996671540235542, 12930529916573967169, 21788762341], + [ 4989110555003898587, 14550097052337552403, 155676955925], + [ 16271452421983657679, 12487632712206414747, 110313931675], + [ 9523160181437090473, 5791017277843595714, 186554421102], + [ 13137707423765072250, 10227264183449036112, 26108748474], + [ 16846859744221860705, 2006055278511721440, 132006979354], + [ 7767140033449795569, 128746359043876332, 1412], + [ 17169456915721160017, 26046931378436, 0], + [ 17180899661833327819, 26046, 0], + [ 1, 0, 208401596416], + [ 17572520700934791416, 7408146306870995753, 74449891024], + [ 17968798858233825417, 8299024588195267961, 164081155402], + [ 15338423313945305609, 1497052939192040880, 16909196452], + [ 17895321323836726301, 16771714264265803746, 76007751440], + [ 814069333008965773, 142988846654429431, 201641838924], + [ 7200328959852723947, 11839838367716104144, 36326325705], + [ 759884557248133773, 6019646776647679764, 84250015524], + [ 13410165861863974851, 4611972391702034947, 50891603540], + [ 6278452420856351570, 16447182322205429544, 111114571826], + [ 9072115382556676442, 2113477168726764244, 200191701103], + [ 2755882551854926563, 3536261187802311515, 89999871944], + [ 8496072611504649269, 18444381860986709853, 237256647769], + [ 4122009033579215815, 4734315730275909837, 112540742381], + [ 10222217724450527221, 9974936316849658173, 220643171696], + [ 2064539481554006325, 11864423681540657641, 104444915676], + [ 7935605886598063693, 8207245621417902666, 207433275752], + [ 7805147585347548429, 7992526918695295027, 114470508751], + [ 5709020905457661273, 8679354522130259986, 236328825714], + [ 16257370307404906674, 6065763799692166460, 76983552492], + [ 14971258192939373646, 18143341109049024975, 93826297164], + [ 1133404845901376390, 15242492331283350569, 238541361245], + [ 9460827548162822047, 9986352353182266962, 214940028398], + [ 1273897659779791346, 17340463289911536076, 201398950870], + [ 7833262224435092783, 7359344614214233034, 92537289], + [ 3033420566713364587, 1707011694817242694, 0], + [ 15075466825360349103, 1707011694, 0], + [ 1, 0, 207022718976], + [ 2484134775182816690, 419091135888749534, 44058175183], + [ 18400539815335991277, 1073142712661309789, 198600454956], + [ 485494064952118286, 11076438902195672285, 193098683590], + [ 17577048805241314891, 1820390940081322072, 251998431425], + [ 2863946907557583807, 18417808973944523596, 79555723771], + [ 13045307417786230800, 10251294197731582956, 138081444943], + [ 12032088871615097766, 1502394029870156427, 1017402250], + [ 8848763446997690580, 321014853559106074, 64129613825], + [ 10031289150307672684, 2390953058510591777, 84579247168], + [ 11592215575498656563, 10685224265907994086, 19323493716], + [ 15894436747956898388, 5967405799190505022, 247607734547], + [ 2091546719588500923, 11210723659228214760, 179668254711], + [ 5863809244813756109, 12327123641078462772, 110092698035], + [ 11303008753675411245, 1709976940107894236, 166900304494], + [ 13238426537506910532, 16607686590938553510, 229993784486], + [ 17258458071023005565, 18332088094272679456, 235159712229], + [ 8385733444777075179, 2946170632136780881, 115261533931], + [ 9530757096163247300, 4824449494694383418, 45922023539], + [ 14423000845391072217, 17008332258693407133, 202096137261], + [ 10953140011159884311, 1773419466622750660, 136211004362], + [ 12228340237948264127, 3892343466023784378, 150650606472], + [ 11279134946966259189, 12001571085575422795, 165701126806], + [ 14640097792684582651, 12933506765500977581, 33644277925], + [ 6232313315128656728, 11884830007749143733, 176523798049], + [ 16136121832933322088, 9662368568096205336, 6064], + [ 15074767079673358271, 111870718431542, 0], + [ 13252722804829281908, 111870, 0], + [ 1, 0, 208910811136], + [ 7740175894281560509, 16801499925276664441, 228568794576], + [ 15670495392425593226, 10492407990787637083, 183416000228], + [ 15152257626756992778, 7673849751013230268, 67327793591], + [ 4090073428152440422, 6046724489853072366, 153201875267], + [ 14450327772834205584, 3723941391207507902, 67913121689], + [ 4466091895542494216, 16844122108860347658, 217575820867], + [ 10454115378553795377, 10622020182694668026, 116473861337], + [ 2267817233475657788, 8741198820686854861, 46371636340], + [ 5500455702636497521, 6855480461211306806, 73542410542], + [ 15178768299492252549, 10005708458011566303, 208484209737], + [ 7062359872332045590, 8932093106442919060, 148491293392], + [ 12297347290027942576, 9062763476260756742, 18740779924], + [ 8030124596941085588, 13664977682032775520, 187058465554], + [ 6526656990996654843, 1078499125430623452, 122355324859], + [ 6254287345256979850, 6554586738078431160, 104660133498], + [ 6642007136244870032, 12177313698643242882, 226900704872], + [ 2027592955437164718, 16615072271904633952, 243887712482], + [ 942718349157325567, 16375404983106569284, 9734669043], + [ 14617066671884002278, 13552251831473522728, 156451597321], + [ 6831631114396133348, 8330500218412111873, 4381874332], + [ 14603040013386939258, 7044338079053294003, 142145762820], + [ 9906106765319401103, 2688849443046530183, 125046400654], + [ 1396179595609933063, 855940991879596844, 239398138749], + [ 11524884268464976417, 7344363609485825661, 23628981487], + [ 382929570730827274, 11602660525134634991, 397444631], + [ 6109721884461301381, 7331559403129590068, 0], + [ 2390514825000339691, 7331559403, 0], + [ 6116191454763441755, 7, 0], + [ 1, 0, 42918608896], + [ 11598868771099176310, 16945343208344873834, 156521392426], + [ 14449966445520085105, 9617992661337889144, 126990979484], + [ 11675595287405614726, 18280344933262742087, 234280807038], + [ 15860796398550489897, 5179975582362777794, 174097519594], + [ 16180408435245829662, 1798918997870037129, 194343023534], + [ 13756992797154950706, 6327667344756325882, 104996399554], + [ 8830551328786758466, 18380327574124007700, 78976619368], + [ 16699955256560951264, 18015447557304295288, 35559209294], + [ 10038983627153402074, 10315590748073249877, 219417304867], + [ 15085100736692127346, 7697916092577993381, 245169359579], + [ 10007783780289711125, 3124132817942110722, 197403769845], + [ 17596907048353602192, 7448238998520507048, 163753131461], + [ 13530650344896573509, 13892823322374205296, 247598595491], + [ 6337724853398437005, 11042137840046332563, 246569963255], + [ 12768885008904063297, 10513966307445593803, 254508948214], + [ 2759773619512884114, 9388437460943526957, 148594534654], + [ 8434364600126655292, 10967228614677896227, 65125279380], + [ 3843827521199949338, 2310996671540235541, 19270460225], + [ 4661660852957808994, 4989110555003898586, 155882077203], + [ 15298044134177324417, 16271452421983657678, 194516251547], + [ 7747773274913338217, 9523160181437090472, 80712196546], + [ 10348785912020632966, 13137707423765072249, 224913270096], + [ 4175372293197190170, 16846859744221860704, 236421057504], + [ 11326064156813083145, 7767140033449795568, 4930758124], + [ 8100407170505981763, 17169456915721160016, 190931378436], + [ 1706556116319916846, 17180899661833327818, 26046], + [ 15028897280749641942, 480481077043500, 0], + [ 1421201742071739121, 480481, 0], + [ 1, 0, 41952608256], + [ 8480737406125178272, 17572520700934791415, 121974090537], + [ 10947205650755620361, 17968798858233825416, 176831497593], + [ 868577942165647781, 15338423313945305608, 226970107312], + [ 16017710019091388479, 17895321323836726300, 247044130786], + [ 6610879150827623375, 814069333008965772, 208390330615], + [ 12110095866223762092, 7200328959852723946, 20041193424], + [ 7756802952949470775, 759884557248133772, 3726966548], + [ 2941800790804618759, 13410165861863974850, 40340355587], + [ 11703600274199927522, 6278452420856351569, 212491800360], + [ 806737539257940346, 9072115382556676441, 91149396692], + [ 14579028397110132023, 2755882551854926562, 93460573019], + [ 14247808875344366934, 8496072611504649268, 205223454557], + [ 9713379923695279513, 4122009033579215814, 61554147533], + [ 2246428675703313877, 10222217724450527220, 233111918909], + [ 3549783776592680620, 2064539481554006324, 74430190057], + [ 12645029747929213033, 7935605886598063692, 51423117898], + [ 16279009267476580506, 7805147585347548428, 18309486643], + [ 343358782242907186, 5709020905457661272, 60881313810], + [ 10077054739085890321, 16257370307404906673, 207811593532], + [ 10526715404712173586, 14971258192939373645, 41061441999], + [ 11438715865125144243, 1133404845901376389, 82512872489], + [ 5040916178827294801, 9460827548162822046, 204069058130], + [ 16643761637275849508, 1273897659779791345, 202424641996], + [ 4852542977279030386, 7833262224435092782, 70164442058], + [ 7883373066544387129, 3033420566713364586, 110817242694], + [ 16699064314768500978, 15075466825360349102, 1707011694], + [ 6805863634444817214, 13042063791413317777, 1], + [ 2266540253968903500, 31488807865, 0], + [ 9016913589137908810, 31, 0], + [ 1, 0, 222134665216], + [ 11654451024602552034, 2484134775182816689, 93997495262], + [ 5299013208454526793, 18400539815335991276, 221026318685], + [ 14918550373926182540, 485494064952118285, 88952853725], + [ 6225552657491071054, 17577048805241314890, 76155254872], + [ 10344713496596235785, 2863946907557583806, 236707187532], + [ 12972405634433280209, 13045307417786230799, 139652260844], + [ 12911885282402784945, 12032088871615097765, 26479692427], + [ 6934311832970995868, 8848763446997690579, 33543797274], + [ 9975729197003430461, 10031289150307672683, 230628415265], + [ 1982857556803548935, 11592215575498656562, 62861639142], + [ 2095735223386298223, 15894436747956898387, 232113382974], + [ 7110931538347639365, 2091546719588500922, 52317877736], + [ 15822183724630969535, 5863809244813756108, 220612737332], + [ 16931982690156327501, 11303008753675411244, 166717656540], + [ 6740069226761666110, 13238426537506910531, 32935582886], + [ 3138792961008474902, 17258458071023005564, 81454591520], + [ 12154594426971851390, 8385733444777075178, 58516663377], + [ 15780127219221910902, 9530757096163247299, 157781872442], + [ 16421541930960194381, 14423000845391072216, 196593770909], + [ 7485894627196740576, 10953140011159884310, 186662899652], + [ 8897269432694476707, 12228340237948264126, 75611443130], + [ 17189823634941678805, 11279134946966259188, 173793641291], + [ 9585582064286255216, 14640097792684582650, 181337854381], + [ 12835472279575022097, 6232313315128656727, 24874740917], + [ 6776016669542754608, 16136121832933322087, 54817204760], + [ 18340015775620871027, 15074767079673358270, 254718431542], + [ 5254188752292365830, 13252722804829281907, 111870], + [ 6798802596750151183, 2063650512248692, 0], + [ 9449320530215272000, 2063650, 0], + [ 1, 0, 121419595776], + [ 17110720482574968811, 7740175894281560508, 91849499257], + [ 16172441693558688213, 15670495392425593225, 188821405531], + [ 6234654946353717320, 15152257626756992777, 238221723324], + [ 11180283100679445438, 4090073428152440421, 190783353838], + [ 14852260031176961272, 14450327772834205583, 10242107326], + [ 4481533167346438750, 4466091895542494215, 250566718730], + [ 4269718344362365664, 10454115378553795376, 205122938618], + [ 11520029752381101466, 2267817233475657787, 54298180301], + [ 16778682550309368417, 5500455702636497520, 223822842678], + [ 9687587467301363608, 15178768299492252548, 148382851295], + [ 10093971076828497318, 7062359872332045589, 6666640532], + [ 1913763026490934696, 12297347290027942575, 96435313926], + [ 12701450127613557000, 8030124596941085587, 220353810784], + [ 8974572160711134644, 6526656990996654842, 184339045596], + [ 9890000077336694124, 6254287345256979849, 130360063928], + [ 4292326716201059148, 6642007136244870031, 96109916034], + [ 14644519175104337420, 2027592955437164717, 68051104864], + [ 5051178622270136798, 942718349157325566, 40792392772], + [ 675983118348065839, 14617066671884002277, 1370343464], + [ 4431647660065117244, 6831631114396133347, 179791632385], + [ 8316115180008411962, 14603040013386939257, 135537011123], + [ 9621158095544965602, 9906106765319401102, 44075687047], + [ 15283478958951102072, 1396179595609933062, 125624765228], + [ 13981553073094447813, 11524884268464976416, 239020758653], + [ 4558368743929911607, 382929570730827273, 52331208687], + [ 15217004469858477791, 6109721884461301380, 235129590068], + [ 11589190369996515737, 2390514825000339690, 7331559403], + [ 3670624237398152929, 6116191454763441754, 7], + [ 13471713758418039777, 135243399970, 0], + [ 4489936967610296411, 135, 0], + [ 1, 0, 106628775936], + [ 9052049303222747950, 11598868771099176309, 120783334250], + [ 1011330006193020538, 14449966445520085104, 71632935288], + [ 17412075644359478612, 11675595287405614725, 194859815495], + [ 6358678384745980468, 15860796398550489896, 137877141698], + [ 15262353928842850919, 16180408435245829661, 250745768073], + [ 11145257686438581736, 13756992797154950705, 20478705146], + [ 1600562031807691890, 8830551328786758465, 120905306388], + [ 6775147337046626724, 16699955256560951263, 85544214392], + [ 15772127322106297822, 10038983627153402073, 165817764949], + [ 4141472200527441474, 15085100736692127345, 2542523045], + [ 18246007807879281267, 10007783780289711124, 168953930242], + [ 960746958654787123, 17596907048353602191, 112733498024], + [ 11355981212264408477, 13530650344896573508, 147343568752], + [ 1573078209576251481, 6337724853398437004, 203692202643], + [ 6245294478780491367, 12768885008904063296, 45149607627], + [ 7523292955659721510, 2759773619512884113, 35457227821], + [ 14454736751015226505, 8434364600126655291, 21208374307], + [ 7219786377781411316, 3843827521199949337, 218252709141], + [ 10597123082209392431, 4661660852957808993, 206829308634], + [ 6922353544343010714, 15298044134177324416, 168420007630], + [ 14317523356293377430, 7747773274913338216, 121561008808], + [ 4057766168681892717, 10348785912020632965, 96226347385], + [ 15214083611901244045, 4175372293197190169, 240613987168], + [ 8390569016883950721, 11326064156813083144, 80439123952], + [ 10680472538208175055, 8100407170505981762, 202092512592], + [ 12173567833130544927, 1706556116319916845, 44814718154], + [ 1386341248286610026, 15028897280749641941, 225077043500], + [ 12487300952797237352, 1421201742071739120, 480481], + [ 2614759871804869720, 8863311460481781, 0], + [ 8494389567327729477, 8863311, 0], + [ 1, 0, 247459741696], + [ 6260469580539185878, 8480737406125178271, 136593449207], + [ 17818573101084525841, 10947205650755620360, 8047085704], + [ 2201029069927307150, 868577942165647780, 28868321800], + [ 10397997613804897039, 16017710019091388478, 140358376476], + [ 14269915965770103741, 6610879150827623374, 234656489612], + [ 16776139909196366727, 12110095866223762091, 140420497130], + [ 6246513436385199720, 7756802952949470774, 194159475340], + [ 2926026498821554288, 2941800790804618758, 81634453442], + [ 15725499391028340982, 11703600274199927521, 89043733329], + [ 8576577277771450827, 806737539257940345, 226790330713], + [ 15523351176022259335, 14579028397110132022, 52772375266], + [ 4775158829429176134, 14247808875344366933, 198526563380], + [ 10141817222123532462, 9713379923695279512, 244121779142], + [ 12847658900242624586, 2246428675703313876, 52192434164], + [ 13708197964460514655, 3549783776592680619, 76685488436], + [ 1951540006613246932, 12645029747929213032, 12882486860], + [ 9979297327280092199, 16279009267476580505, 88018613516], + [ 15381307706282553684, 343358782242907185, 177546278232], + [ 10037428657543061177, 10077054739085890320, 77570654385], + [ 2584877324547208668, 10526715404712173585, 133620094029], + [ 1126624732730703576, 11438715865125144242, 158273268613], + [ 1501064139624981020, 5040916178827294800, 241902260126], + [ 5219661484955306109, 16643761637275849507, 46263056881], + [ 5336997298570282212, 4852542977279030385, 106427358510], + [ 12191131175733833362, 7883373066544387128, 174905258090], + [ 3707068178994436536, 16699064314768500977, 145368946606], + [ 5045484691732942022, 6805863634444817213, 185122869393], + [ 14847900542908711232, 2266540253968903499, 31488807865], + [ 9097257915916965135, 9016913589137908809, 31], + [ 2472027983230314217, 580865979874, 0], + [ 15974509111133272205, 580, 0], + [ 1, 0, 177631789056], + [ 12099486841948187399, 11654451024602552033, 236287260081], + [ 5319910566029976328, 5299013208454526792, 13808736236], + [ 11549214421017285864, 14918550373926182539, 74337487885], + [ 1998791413186046700, 6225552657491071053, 190560788042], + [ 17075171930090011210, 10344713496596235784, 15703235518], + [ 15158296003813501474, 12972405634433280208, 165699954703], + [ 1360083178079384115, 12911885282402784944, 211375909797], + [ 6167980558592741158, 6934311832970995867, 107540785363], + [ 3630180428124865653, 9975729197003430460, 50107490923], + [ 2276550099763657677, 1982857556803548934, 83113610034], + [ 407006713016100655, 2095735223386298222, 186385484371], + [ 14242579061653496002, 7110931538347639364, 204857722298], + [ 17944493332678643704, 15822183724630969534, 44917884620], + [ 987185901870869452, 16931982690156327500, 67365379884], + [ 5578665155415167745, 6740069226761666109, 124170154307], + [ 4849210377429577536, 3138792961008474901, 234658901884], + [ 10811995403388891862, 12154594426971851389, 195855442410], + [ 7051931074990177294, 15780127219221910901, 216890213571], + [ 2030832259446664275, 16421541930960194380, 22405811160], + [ 6069512651054767896, 7485894627196740575, 190482321942], + [ 10608701253763958799, 8897269432694476706, 244931862206], + [ 15700053443426906717, 17189823634941678804, 250519635444], + [ 17759719234725541222, 9585582064286255215, 87695812346], + [ 15187321568916405210, 12835472279575022096, 103367328599], + [ 11040156458113129594, 6776016669542754607, 190994214247], + [ 2800727824598008497, 18340015775620871026, 115284830142], + [ 2997236166375604479, 5254188752292365829, 116368563827], + [ 6260091886451512841, 6798802596750151182, 34512248692], + [ 17573059315228347474, 9449320530215271999, 2063650], + [ 7519453664590169251, 38067632857031246, 0], + [ 15809436065653866529, 38067632, 0], + [ 1, 0, 188927574016], + [ 228921437623588922, 17110720482574968810, 137876709820], + [ 2195862230003073884, 16172441693558688212, 9337981321], + [ 960207412233973688, 6234654946353717319, 101606084361], + [ 2464387149230492479, 11180283100679445437, 143805142629], + [ 3631866936444955213, 14852260031176961271, 7242944399], + [ 1578304441149380227, 4481533167346438749, 48231461895], + [ 18190538519673445181, 4269718344362365663, 59624502064], + [ 1271000736479934749, 11520029752381101465, 112909574203], + [ 18292963032817745634, 16778682550309368416, 132525165168], + [ 17168014021925537455, 9687587467301363607, 21547195268], + [ 18046757712870378949, 10093971076828497317, 175103745301], + [ 14857998893911743220, 1913763026490934695, 147688546991], + [ 11933607369968684575, 12701450127613556999, 250486512531], + [ 3483798509902859162, 8974572160711134643, 137536137978], + [ 7378828438829845831, 9890000077336694123, 143232687497], + [ 15791137430347699565, 4292326716201059147, 173793880975], + [ 17044141236829932641, 14644519175104337419, 254273824941], + [ 9075651910862456484, 5051178622270136797, 229036645118], + [ 17811207355884564095, 675983118348065838, 227240240101], + [ 4438638126207305937, 4431647660065117243, 121450817507], + [ 12507972635512950185, 8316115180008411961, 142521564025], + [ 14658269128098109408, 9621158095544965601, 6828519054], + [ 3642436268910286111, 15283478958951102071, 32757941510], + [ 3783099432964819561, 13981553073094447812, 9247109664], + [ 9497579866027539638, 4558368743929911606, 132824915465], + [ 3395179445046271361, 15217004469858477790, 234628251268], + [ 5938502732309497276, 11589190369996515736, 90198984938], + [ 5793671185917606255, 3670624237398152928, 34730303066], + [ 889272970253526588, 13471713758418039776, 135243399970], + [ 8594177504370135501, 4489936967610296410, 135], + [ 7374354721120724712, 2494800386918, 0], + [ 14764532643665507567, 2494, 0], + [ 1, 0, 117490712576], + [ 5392404173658087695, 9052049303222747949, 112054824309], + [ 4976586473237854316, 1011330006193020537, 133943910512], + [ 6308932742419013569, 17412075644359478611, 40344704645], + [ 4831846642430703059, 6358678384745980467, 29827373864], + [ 18139507855949846901, 15262353928842850918, 49604185629], + [ 4865833876326628410, 11145257686438581735, 65086766641], + [ 14296661839130179261, 1600562031807691889, 223367281473], + [ 9254773150378118248, 6775147337046626723, 217855008735], + [ 12174712433727875143, 15772127322106297821, 113224509657], + [ 705653145340915199, 4141472200527441473, 20989118065], + [ 17763928858962481812, 18246007807879281266, 143052082196], + [ 3982836567612046296, 960746958654787122, 68615608975], + [ 12730849277561967739, 11355981212264408476, 140085276740], + [ 17314488764367235908, 1573078209576251480, 64338558092], + [ 15951418930590301119, 6245294478780491366, 145407838528], + [ 7193356087283467261, 7523292955659721509, 59783592849], + [ 17592945625696089446, 14454736751015226504, 25391385403], + [ 3554461664875361428, 7219786377781411315, 97574471193], + [ 2213779057785318208, 10597123082209392430, 128375261537], + [ 3880940796082421148, 6922353544343010713, 104776154496], + [ 4528237545358141043, 14317523356293377429, 133219971944], + [ 11681196539088147363, 4057766168681892716, 25824757125], + [ 9835005502912643017, 15214083611901244044, 8454853657], + [ 4964088126040986696, 8390569016883950720, 66578989576], + [ 3355564873147047622, 10680472538208175054, 45659930434], + [ 1853093467828272927, 12173567833130544926, 213075153709], + [ 14755341584803008677, 1386341248286610025, 240676937941], + [ 4701571132542556621, 12487300952797237351, 245141746416], + [ 6128849686644853851, 2614759871804869719, 79460481781], + [ 12026867901170202094, 8494389567327729476, 8863311], + [ 17909760324981426303, 163499238157084246, 0], + [ 2897692901883393664, 163499238, 0], + [ 1, 0, 159339380736], + [ 12323704802554838154, 6260469580539185877, 8965946783], + [ 7135886931147821732, 17818573101084525840, 164119318024], + [ 15341283120292884947, 2201029069927307149, 62563676580], + [ 3092789040392634166, 10397997613804897038, 206773573694], + [ 8811761390822097865, 14269915965770103740, 171909436366], + [ 16870860798610218169, 16776139909196366726, 54338624171], + [ 17452041453591904833, 6246513436385199719, 6158620214], + [ 10314783684009874908, 2926026498821554287, 225852481030], + [ 4932636630789274903, 15725499391028340981, 121464937185], + [ 18143884346082124480, 8576577277771450826, 54841522553], + [ 2823209155405527322, 15523351176022259334, 85258861878], + [ 16195396106620226251, 4775158829429176133, 152549789013], + [ 1150544491807648944, 10141817222123532461, 212696472984], + [ 7767455475523884824, 12847658900242624585, 171743122900], + [ 15204378045683991808, 13708197964460514654, 104105793195], + [ 17239732561718805622, 1951540006613246931, 153540978792], + [ 12886430624522800062, 9979297327280092198, 49833822361], + [ 18162250541178258136, 15381307706282553683, 16544130097], + [ 17028935366700158084, 10037428657543061176, 17140126480], + [ 16075467823964198637, 2584877324547208667, 178061074449], + [ 9803858825574498304, 1126624732730703575, 80081372850], + [ 17464070808143041817, 1501064139624981019, 35282958416], + [ 17682703471239266776, 5219661484955306108, 113289319203], + [ 18147688354161351336, 5336997298570282211, 56660882545], + [ 6663423873348080051, 12191131175733833361, 241200960568], + [ 9417270363716235133, 3707068178994436535, 61273516273], + [ 9295013721571344179, 5045484691732942021, 75804906301], + [ 6199479138350037783, 14847900542908711231, 73493163339], + [ 887603005365085688, 9097257915916965134, 226134008905], + [ 333989628642975696, 2472027983230314216, 68865979874], + [ 4620735991403939439, 15974509111133272204, 580], + [ 12418523063962801201, 10715086071862, 0], + [ 1587745622680169419, 10715, 0], + [ 1, 0, 225655914496], + [ 10968905082284365638, 12099486841948187398, 72288392929], + [ 14076907092801977812, 5319910566029976327, 139626084168], + [ 3438322122816124202, 11549214421017285863, 77108354699], + [ 14645413324829073676, 1998791413186046699, 8925646925], + [ 12271281439492289999, 17075171930090011209, 208821732872], + [ 6233751789862708246, 15158296003813501473, 176073730256], + [ 1962644459455827991, 1360083178079384114, 155334366896], + [ 8726934184642952500, 6167980558592741157, 60196792475], + [ 4531087719737475147, 3630180428124865652, 6123412028], + [ 481513520412720775, 2276550099763657676, 110022063878], + [ 992149349835802669, 407006713016100654, 68772091758], + [ 11165474436676191361, 14242579061653496001, 190972772932], + [ 10240785855143707184, 17944493332678643703, 76053515454], + [ 10059329918238932466, 987185901870869451, 61302420044], + [ 14791716450947031886, 5578665155415167744, 21262876221], + [ 15378882314737417403, 4849210377429577535, 125586119445], + [ 14726970229242271128, 10811995403388891861, 117382285949], + [ 5090110549507128156, 7051931074990177293, 76110091637], + [ 17185220781106503841, 2030832259446664274, 223329028940], + [ 9858517691519529306, 6069512651054767895, 162575098847], + [ 5595905546638020703, 10608701253763958798, 212851101602], + [ 15555173226968030256, 15700053443426906716, 111962756308], + [ 10745236628845355771, 17759719234725541221, 16823306351], + [ 9973314042399760760, 15187321568916405209, 47598488080], + [ 4374506813558796576, 11040156458113129593, 114151827759], + [ 15960826480426749933, 2800727824598008496, 5162480498], + [ 9636454862798615738, 2997236166375604478, 14339360261], + [ 17973331528911319269, 6260091886451512840, 63952637454], + [ 7366495200039369602, 17573059315228347473, 78407630399], + [ 10505831326526933399, 7519453664590169250, 176857031246], + [ 2803218632575724145, 15809436065653866528, 38067632], + [ 8425731874431741636, 702223880805592151, 0], + [ 14860552245711912111, 702223880, 0], + [ 1, 0, 234012409856], + [ 6993664200669526994, 228921437623588921, 212119037930], + [ 4065363582031999356, 2195862230003073883, 71052052948], + [ 6899780515342669867, 960207412233973687, 189133594695], + [ 17713500890201844939, 2464387149230492478, 247196883901], + [ 6445781125105107086, 3631866936444955212, 93085560055], + [ 13563044070717478571, 1578304441149380226, 223986111069], + [ 13167612994149348885, 18190538519673445180, 153068901087], + [ 5505463469596727288, 1271000736479934748, 96991663513], + [ 12125446212518819372, 18292963032817745633, 151930679904], + [ 12537707724735421794, 17168014021925537454, 165978316695], + [ 15173675086703777069, 18046757712870378948, 167805453733], + [ 13535510174093048476, 14857998893911743219, 7646922151], + [ 10698912997087096629, 11933607369968684574, 179188857095], + [ 16952559548431933861, 3483798509902859161, 107400007091], + [ 13528255827744249993, 7378828438829845830, 75856039275], + [ 14122167436324771955, 15791137430347699564, 11923964747], + [ 13071007137740038297, 17044141236829932640, 221491992075], + [ 13011887609328904025, 9075651910862456483, 46965547485], + [ 3116434332871336590, 17811207355884564094, 59240619054], + [ 9050993820536772770, 4438638126207305936, 57678058555], + [ 11993719123438634238, 12507972635512950184, 225794626361], + [ 1414857165879849301, 14658269128098109407, 119197456865], + [ 13819438220812375094, 3642436268910286110, 196205082231], + [ 6073063033888264440, 3783099432964819560, 54514864836], + [ 6828883869150720294, 9497579866027539637, 222184053046], + [ 4548265621068768345, 3395179445046271360, 152321926878], + [ 10422524923581371874, 5938502732309497275, 224314075544], + [ 1858996082510682634, 5793671185917606254, 224048207584], + [ 890276727450878316, 889272970253526587, 90465891296], + [ 3886008133802710905, 8594177504370135500, 102399764570], + [ 612074409233016757, 7374354721120724711, 190800386918], + [ 3927020336901729264, 14764532643665507566, 2494], + [ 5298603480094474942, 46020944252475, 0], + [ 17418383752590430025, 46020, 0], + [ 1, 0, 45292322816], + [ 8973799690601597929, 5392404173658087694, 121269781293], + [ 1343055462055792431, 4976586473237854315, 83342007929], + [ 17425118728683169659, 6308932742419013568, 51261934931], + [ 18389781726026675967, 4831846642430703058, 102983344691], + [ 272526939565961561, 18139507855949846900, 231263777382], + [ 11293026845930963228, 4865833876326628409, 113775023591], + [ 13997416438903902597, 14296661839130179260, 163501702257], + [ 6186605805999441184, 9254773150378118247, 221659992483], + [ 4401776373281836138, 12174712433727875142, 65038253533], + [ 16338917089754547008, 705653145340915198, 114962984513], + [ 13337700757935003056, 17763928858962481811, 50215910002], + [ 14612496890816348693, 3982836567612046295, 156690140722], + [ 3219935399907691719, 12730849277561967738, 88938620316], + [ 10887238730052330387, 17314488764367235907, 102864728152], + [ 360256418697768294, 15951418930590301118, 37389952614], + [ 321440824631118565, 7193356087283467260, 136953715493], + [ 10069228080701402580, 17592945625696089445, 243192687752], + [ 9428069607611622975, 3554461664875361427, 46120009203], + [ 14736799017468812344, 2213779057785318207, 153210386222], + [ 10875332567307979280, 3880940796082421147, 149245476249], + [ 4611492910339012807, 4528237545358141042, 108633238933], + [ 10743508637597314786, 11681196539088147362, 140533156716], + [ 9356196315668016028, 9835005502912643016, 128269103756], + [ 15755598617722189347, 4964088126040986695, 206181905536], + [ 1275276394173375542, 3355564873147047621, 30100456398], + [ 12644999363867216251, 1853093467828272926, 105799888670], + [ 4553830511509832021, 14755341584803008676, 103254872681], + [ 8869400642218174412, 4701571132542556620, 87332245607], + [ 16570849151159054040, 6128849686644853850, 68651977815], + [ 16127119334101797673, 12026867901170202093, 86970890052], + [ 9686867250420930550, 17909760324981426302, 230157084246], + [ 10678226869774428035, 2897692901883393663, 163499238], + [ 7767227962910162068, 3016028602530220424, 0], + [ 9780840471948993674, 3016028602, 0], + [ 1, 0, 213668069376], + [ 6288709332106746357, 12323704802554838153, 16386837205], + [ 9066785620141948673, 7135886931147821731, 141831652624], + [ 8442375916704414909, 15341283120292884946, 14167660429], + [ 11604629218100425803, 3092789040392634165, 188477686542], + [ 3877248044010875762, 8811761390822097864, 134914571196], + [ 16435137704395217283, 16870860798610218168, 103946077062], + [ 14994442577577813271, 17452041453591904832, 111559165543], + [ 4410105917142436089, 10314783684009874907, 245267398767], + [ 4632574728444936970, 4932636630789274902, 202983581941], + [ 9117147535650050359, 18143884346082124479, 134153046474], + [ 588939301256904809, 2823209155405527321, 69877954182], + [ 324393982565305683, 16195396106620226250, 173062371141], + [ 9380909186923521175, 1150544491807648943, 73421074605], + [ 4463385697777230217, 7767455475523884823, 94824230985], + [ 16378985502426333808, 15204378045683991807, 211934567774], + [ 18210894922387834354, 17239732561718805621, 38698574803], + [ 1555748035329493205, 12886430624522800061, 83984577574], + [ 4277055533891898507, 18162250541178258135, 184923140435], + [ 11574429772510874408, 17028935366700158083, 219871452856], + [ 17391099253493808815, 16075467823964198636, 215531468251], + [ 5791212393959129882, 9803858825574498303, 27946729175], + [ 11254268231455680880, 17464070808143041816, 124958581275], + [ 16355477587312235322, 17682703471239266775, 227983788156], + [ 2411485149249320633, 18147688354161351335, 145361224931], + [ 12763114642070638360, 6663423873348080050, 183510511249], + [ 1147543073987366419, 9417270363716235132, 197503883703], + [ 8410777835225272692, 9295013721571344178, 63336074437], + [ 8134725822306818018, 6199479138350037782, 14048117055], + [ 8899607004752328377, 887603005365085687, 232018105614], + [ 690976506652396830, 333989628642975695, 140250490600], + [ 12281570945595192074, 4620735991403939438, 54673209484], + [ 12592957291365552899, 12418523063962801200, 219086071862], + [ 13595807339013970272, 1587745622680169418, 10715], + [ 9698096389749839992, 197658450495420, 0], + [ 8310173728816391804, 197658, 0], ]; -pub(crate) const TABLE_SIZE_2: usize = 27; +pub(crate) const TABLE_SIZE_2: usize = 69; pub(crate) const ADDITIONAL_BITS_2: usize = 120; #[rustfmt::skip] pub(crate) const POW10_OFFSET_2: [u16; TABLE_SIZE_2] = [ - /* 00 */ 0, - /* 01 */ 2, - /* 02 */ 6, - /* 03 */ 12, - /* 04 */ 20, - /* 05 */ 29, - /* 06 */ 40, - /* 07 */ 52, - /* 08 */ 66, - /* 09 */ 80, - /* 10 */ 95, - /* 11 */ 112, - /* 12 */ 130, - /* 13 */ 150, - /* 14 */ 170, - /* 15 */ 192, - /* 16 */ 215, - /* 17 */ 240, - /* 18 */ 265, - /* 19 */ 292, - /* 20 */ 320, - /* 21 */ 350, - /* 22 */ 381, - /* 23 */ 413, - /* 24 */ 446, - /* 25 */ 480, - /* 26 */ 516, + 0, 2, 6, 12, 20, 29, 40, 52, 66, 80, + 95, 112, 130, 150, 170, 192, 215, 240, 265, 292, + 320, 350, 381, 413, 446, 480, 516, 552, 590, 629, + 670, 712, 755, 799, 845, 892, 940, 989, 1040, 1092, + 1145, 1199, 1254, 1311, 1369, 1428, 1488, 1550, 1613, 1678, + 1743, 1810, 1878, 1947, 2017, 2088, 2161, 2235, 2311, 2387, + 2465, 2544, 2625, 2706, 2789, 2873, 2959, 3046, 3133 ]; #[rustfmt::skip] pub(crate) const MIN_BLOCK_2: [u8; TABLE_SIZE_2] = [ - /* 00 */ 0, - /* 01 */ 0, - /* 02 */ 0, - /* 03 */ 0, - /* 04 */ 0, - /* 05 */ 0, - /* 06 */ 1, - /* 07 */ 1, - /* 08 */ 2, - /* 09 */ 3, - /* 10 */ 3, - /* 11 */ 4, - /* 12 */ 4, - /* 13 */ 5, - /* 14 */ 5, - /* 15 */ 6, - /* 16 */ 6, - /* 17 */ 7, - /* 18 */ 7, - /* 19 */ 8, - /* 20 */ 8, - /* 21 */ 9, - /* 22 */ 9, - /* 23 */ 10, - /* 24 */ 11, - /* 25 */ 11, - /* 26 */ 12, + 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, + 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, + 8, 9, 9, 10, 11, 11, 12, 12, 13, 13, + 14, 14, 15, 15, 16, 16, 17, 17, 18, 19, + 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, + 24, 25, 26, 26, 27, 27, 28, 28, 29, 29, + 30, 30, 31, 31, 32, 32, 33, 34, 0 ]; #[rustfmt::skip] -pub(crate) const POW10_SPLIT_2: [[u64; 3]; 480 + 1] = [ - [0, 0, 3906250], - [0, 0, 202000000000], - [0, 11153727427136454656, 59], - [0, 7205759403792793600, 59604644775], - [0, 0, 167390625000], - [0, 0, 232000000000], - [0, 16777216000000000, 0], - [0, 12945425605062557696, 909494], - [0, 4388757836872548352, 182701772928], - [0, 1152921504606846976, 128237915039], - [0, 0, 159062500000], - [0, 0, 160000000000], - [0, 256000000000, 0], - [0, 16192327041775828992, 13], - [0, 15024075324038053888, 13877787807], - [0, 5449091666327633920, 159814456755], - [0, 2494994193563254784, 179295395851], - [0, 4611686018427387904, 11135253906], - [0, 0, 146250000000], - [0, 0, 128000000000], - [0, 3906250, 0], - [0, 3906250000000000, 0], - [0, 4368439412768899072, 211758], - [0, 1563676642168012800, 46236813575], - [0, 11532349341402398720, 7084767080], - [0, 9048364970084925440, 104625169910], - [0, 16609275425742389248, 246490512847], - [0, 0, 207900390625], - [0, 0, 225000000000], - [11153727427136454656, 59, 0], - [7205759403792793600, 59604644775, 0], - [0, 4264412554261970152, 3], - [0, 14485570586272534528, 3231174267], - [0, 17827675094632103936, 123785264354], - [0, 7347197909193981952, 226966440203], - [0, 13677404030777688064, 11398292396], - [0, 3810326759732150272, 172741453558], - [0, 9943947977234055168, 246206558227], - [0, 0, 19539062500], - [0, 0, 228000000000], - [12945425605062557696, 909494, 0], - [4388757836872548352, 909494701772928, 0], - [1152921504606846976, 14878706826214591391, 49303], - [0, 4387341015746028192, 151806576313], - [0, 651726680428265472, 185237838233], - [0, 2570638187944738816, 153035330174], - [0, 7419175577111756800, 126139354575], - [0, 17299322326264840192, 207402194313], - [0, 7990511638862102528, 137937798142], - [0, 16717361816799281152, 254433166503], - [0, 0, 167906250000], - [0, 0, 16000000000], - [16192327041775828992, 13, 0], - [15024075324038053888, 13877787807, 0], - [5449091666327633920, 13877787807814456755, 0], - [2494994193563254784, 9707857417284919307, 752316384], - [4611686018427387904, 1844515466944871826, 224526264005], - [0, 15167599819856275072, 197099991383], - [0, 14830185305589481472, 87822237233], - [0, 6163721531743535104, 49803945956], - [0, 14122847407012052992, 228334136013], - [0, 335491783960035328, 205765601092], - [0, 941252322120433664, 68018187046], - [0, 11529215046068469760, 38051025390], - [0, 0, 238625000000], - [0, 0, 64000000000], - [4368439412768899072, 211758, 0], - [1563676642168012800, 211758236813575, 0], - [11532349341402398720, 8061591463141767016, 11479], - [9048364970084925440, 16628725344207857142, 215437019748], - [16609275425742389248, 3555541870038531535, 100901445007], - [0, 18316647450161853665, 143192746310], - [0, 16709574568378075648, 70992947447], - [0, 7696022835795591168, 247905827852], - [0, 16664449640376041472, 12417202233], - [0, 3109186955116544000, 57903381625], - [0, 10515518101817131008, 121168549362], - [0, 9961962375743537152, 242570047378], - [0, 9223372036854775808, 146540039062], - [0, 0, 150500000000], - [14485570586272534528, 3231174267, 0], - [17827675094632103936, 3231174267785264354, 0], - [7347197909193981952, 748977172262750475, 175162308], - [13677404030777688064, 15965033457315095468, 196040602133], - [3810326759732150272, 16809402149066729206, 21865466197], - [9943947977234055168, 7563769067065700371, 85911239516], - [0, 13550322810840051428, 92410032742], - [0, 8663209637545764864, 102734564471], - [0, 8969247575312957440, 119469633535], - [0, 6193172891660451840, 255486223885], - [0, 3427954273864908800, 13335732575], - [0, 10058367555266936832, 95185829773], - [0, 13907115649320091648, 141545265197], - [0, 0, 45753906250], - [0, 0, 74000000000], - [14878706826214591391, 49303, 0], - [4387341015746028192, 49303806576313, 0], - [651726680428265472, 14106411361315920281, 2672], - [2570638187944738816, 3609034283485221502, 112764710092], - [7419175577111756800, 9896072247338192335, 204195646140], - [17299322326264840192, 8889095178479228297, 188536467151], - [7990511638862102528, 3631796911038383102, 207481878815], - [16717361816799281152, 898318840772166823, 31196880105], - [0, 17293677953982795024, 233048697961], - [0, 7353628266884669440, 105937492160], - [0, 2404693032470315008, 192398640987], - [0, 9191155893041889280, 91130358670], - [0, 6353946855033798656, 142498253559], - [0, 3767824038248841216, 247344448149], - [0, 7205759403792793600, 149204254150], - [0, 0, 198390625000], - [0, 0, 232000000000], - [9707857417284919307, 752316384, 0], - [1844515466944871826, 752316384526264005, 0], - [15167599819856275072, 17063068157692817751, 40783152], - [14830185305589481472, 5385330256507239985, 48924990778], - [6163721531743535104, 3373050282752075748, 58291939338], - [14122847407012052992, 4116064001262906061, 10182853422], - [335491783960035328, 11306582046748043076, 46223132276], - [941252322120433664, 17035410946089626406, 116612931040], - [11529215046068469760, 15618595715183448558, 224923491477], - [0, 5141740092277295680, 149846685770], - [0, 16973644291514990592, 74278734288], - [0, 14625255268443750400, 208920143100], - [0, 14021170507320131584, 252792836676], - [0, 4451355232865091584, 68760089176], - [0, 12891553933348044800, 88241308450], - [0, 1152921504606846976, 34698852539], - [0, 0, 187062500000], - [0, 0, 160000000000], - [8061591463141767016, 11479, 0], - [16628725344207857142, 11479437019748, 0], - [3555541870038531535, 5562205901560339855, 622], - [18316647450161853665, 2106077949367544134, 110301527786], - [16709574568378075648, 7496855998374373623, 234114170714], - [7696022835795591168, 229183437194837004, 90406405378], - [16664449640376041472, 465169186276472889, 2012424059], - [3109186955116544000, 2152980561625316473, 123025216872], - [10515518101817131008, 2059790725449340402, 104116713310], - [9961962375743537152, 17891190926410198930, 94111661478], - [9223372036854775808, 9930696175609809814, 166969883403], - [0, 7276914261609005312, 11538344118], - [0, 10539762974036983808, 182394482312], - [0, 12851089458992250880, 136571361695], - [0, 9449311677678878720, 159696658955], - [0, 8699564697382289408, 11512248212], - [0, 4224376450473525248, 148471604347], - [0, 4611686018427387904, 123229003906], - [0, 0, 130250000000], - [0, 0, 128000000000], - [748977172262750475, 175162308, 0], - [15965033457315095468, 175162308040602133, 0], - [16809402149066729206, 13756840147955779925, 9495567], - [7563769067065700371, 13788447602092505948, 15745759798], - [13550322810840051428, 4972540435632173670, 54747473242], - [8663209637545764864, 2844874687533091959, 90269561957], - [8969247575312957440, 15377573779532804095, 101154220965], - [6193172891660451840, 17824715805091194381, 165833619944], - [3427954273864908800, 18277569135638159711, 232966279779], - [10058367555266936832, 4254645803379752845, 99990829008], - [13907115649320091648, 2933643244178200621, 208230644811], - [0, 17188148801879487562, 75159033118], - [0, 11069762501163246592, 30931771413], - [0, 11676570643941818368, 21600093027], - [0, 17840016768744030208, 99632988162], - [0, 16463817321652158464, 2967109246], - [0, 6954191143357644800, 126892505325], - [0, 5080060379673919488, 237376987457], - [0, 0, 65275390625], - [0, 0, 161000000000], - [14106411361315920281, 2672, 0], - [3609034283485221502, 2672764710092, 0], - [9896072247338192335, 16433563478020213436, 144], - [8889095178479228297, 4194750497955655375, 144890865261], - [3631796911038383102, 2691539602252904735, 109227397880], - [898318840772166823, 3775467271962795241, 248145908654], - [17293677953982795024, 16980212613224918121, 174204668490], - [7353628266884669440, 4172857038337333440, 74920499170], - [2404693032470315008, 5936867627376461659, 226226211033], - [9191155893041889280, 17856837443266866062, 217321838238], - [6353946855033798656, 8956297047799810807, 158968021097], - [3767824038248841216, 15356974049716912789, 105485521835], - [7205759403792793600, 6923608913322982854, 171832503231], - [0, 4855902993563955944, 191375329591], - [0, 13835893222288330752, 55263239028], - [0, 9114973913760137216, 116750045274], - [0, 17937099003422310400, 90494123725], - [0, 7007960010734960640, 205972372085], - [0, 7683422439270776832, 117379902273], - [0, 720575940379279360, 65416519165], - [0, 0, 253039062500], - [0, 0, 228000000000], - [17063068157692817751, 40783152, 0], - [5385330256507239985, 40783152924990778, 0], - [3373050282752075748, 2768933352715741194, 2210859], - [4116064001262906061, 15201941611824153390, 43150104177], - [11306582046748043076, 1418128541727000180, 113824098906], - [17035410946089626406, 5353350204565757408, 90076876902], - [15618595715183448558, 1721001680354286741, 102290205696], - [5141740092277295680, 637631411660453962, 93295688], - [16973644291514990592, 1630012588870568400, 72034566068], - [14625255268443750400, 9253063571656828156, 180088363159], - [14021170507320131584, 6029146854993203780, 151501609581], - [4451355232865091584, 16987401965352759896, 109326840705], - [12891553933348044800, 14499131620542087970, 129920888905], - [1152921504606846976, 1978417255298660539, 73785999500], - [0, 5790079354402454176, 140107250214], - [0, 13748918935842078720, 38313880830], - [0, 18047438014740692992, 254745330388], - [0, 3116889656839372800, 212978353575], - [0, 15995952446606147584, 167168966926], - [0, 12530140063251562496, 14867142319], - [0, 16717361816799281152, 175679260253], - [0, 0, 93906250000], - [0, 0, 16000000000], - [5562205901560339855, 622, 0], - [2106077949367544134, 622301527786, 0], - [7496855998374373623, 13558973353698967386, 33], - [229183437194837004, 6228991722850501890, 33735033418], - [465169186276472889, 16886831391703377787, 74337674317], - [2152980561625316473, 1181713637872883048, 77915436964], - [2059790725449340402, 12393932434925221726, 164064060824], - [17891190926410198930, 10684799845419711910, 152671876423], - [9930696175609809814, 4590318792215640843, 71579224160], - [7276914261609005312, 6383712187366189238, 96248841680], - [10539762974036983808, 1904270214927675016, 208346061731], - [12851089458992250880, 3711506775113308575, 163103230695], - [9449311677678878720, 8091219444738793995, 231201201185], - [8699564697382289408, 39436684991068052, 33438625885], - [4224376450473525248, 18025182908196512891, 93002137866], - [4611686018427387904, 7853924592034603138, 10977147123], - [0, 4815749283615688320, 243425762105], - [0, 14242399906544287744, 57261062291], - [0, 76242322576113664, 147772082046], - [0, 10858088421377703936, 126004133104], - [0, 14293835879041466368, 240588618152], - [0, 12182236992037191680, 168774870395], - [0, 11529215046068469760, 123660400390], - [0, 0, 6625000000], - [0, 0, 64000000000], - [13756840147955779925, 9495567, 0], - [13788447602092505948, 9495567745759798, 0], - [4972540435632173670, 14000097438505379162, 514755], - [2844874687533091959, 16451062686452429925, 195758946802], - [15377573779532804095, 4009347599785716645, 242891813895], - [17824715805091194381, 16544162347546196456, 7217347168], - [18277569135638159711, 17674258299745817187, 96896860837], - [4254645803379752845, 5215238411201214416, 165958123462], - [2933643244178200621, 14253990228345322571, 198282718640], - [17188148801879487562, 11214836553940194590, 176772710358], - [11069762501163246592, 14620711348380590101, 214607957507], - [11676570643941818368, 6638710787931587427, 3792590350], - [17840016768744030208, 17320000343692853250, 14359885232], - [16463817321652158464, 75147386268843646, 176938919100], - [6954191143357644800, 17938801582125480173, 188004073747], - [5080060379673919488, 6573358613626446145, 19972464382], - [0, 8688505427903736481, 254356342484], - [0, 539870168696556032, 212471004823], - [0, 9002861336394465280, 151029266420], - [0, 17989846818158018560, 244488046090], - [0, 2700938287723315200, 10975231550], - [0, 17800090499088908288, 62146418157], - [0, 8809040871136690176, 237964944839], - [0, 9223372036854775808, 199477539062], - [0, 0, 246500000000], - [16433563478020213436, 144, 0], - [4194750497955655375, 144890865261, 0], - [2691539602252904735, 15763656745260536568, 7], - [3775467271962795241, 8787336846248645550, 7854549544], - [16980212613224918121, 17584084447880694346, 40476362484], - [4172857038337333440, 18041672551129683938, 244953235127], - [5936867627376461659, 14025886302294509785, 183978041028], - [17856837443266866062, 18430498103283160734, 196760344819], - [8956297047799810807, 3292348826238025833, 243999119304], - [15356974049716912789, 9211721212658275243, 200178478587], - [6923608913322982854, 10233245872666307519, 251499368407], - [4855902993563955944, 6200995035623311671, 215554745370], - [13835893222288330752, 8480542380570450804, 26336156614], - [9114973913760137216, 11870363864499900506, 198459731123], - [17937099003422310400, 9301051379839581901, 179643493714], - [7007960010734960640, 11456694803569638005, 82504211005], - [7683422439270776832, 14327208890643983169, 61621068669], - [720575940379279360, 4510081789599866365, 125776679550], - [0, 13255356976020303332, 126244492023], - [0, 9658806854127314944, 247718574341], - [0, 13708435528809971712, 5523604968], - [0, 1580190652103131136, 232743135779], - [0, 16557336970347413504, 35085662306], - [0, 12751520132434493440, 98897575035], - [0, 9295429630892703744, 123691261291], - [0, 0, 107503906250], - [0, 0, 202000000000], - [2768933352715741194, 2210859, 0], - [15201941611824153390, 2210859150104177, 0], - [1418128541727000180, 16872870088062921306, 119850], - [5353350204565757408, 5112979788807802982, 42914680120], - [1721001680354286741, 13742728082020150272, 56277175189], - [637631411660453962, 2217110934613627976, 149744994782], - [1630012588870568400, 11021433940188610484, 222120189824], - [9253063571656828156, 1713669895470733463, 128597473131], - [6029146854993203780, 3313382510572018285, 107092898231], - [16987401965352759896, 14976595232784069505, 183179618825], - [14499131620542087970, 7213172372862496841, 9811882854], - [1978417255298660539, 15836474542502248588, 102391026857], - [5790079354402454176, 3221099285878340134, 169858497005], - [13748918935842078720, 3265814602578095358, 237174616142], - [18047438014740692992, 6502528252282225364, 78177040164], - [3116889656839372800, 16392476834556790183, 36352502762], - [15995952446606147584, 15167629413417091342, 234888637949], - [12530140063251562496, 1366763272626280111, 253822238838], - [16717361816799281152, 8720523635169216093, 118074092385], - [0, 9649171375767398672, 97472740533], - [0, 7647980704001073152, 181523082628], - [0, 13286434495608651776, 132414597864], - [0, 4358271637167013888, 232720259057], - [0, 15954987941890097152, 241236262378], - [0, 7911135695429697536, 234864921629], - [0, 7205759403792793600, 29428863525], - [0, 0, 37390625000], - [0, 0, 232000000000], - [13558973353698967386, 33, 0], - [6228991722850501890, 33735033418, 0], - [16886831391703377787, 15288289344628122701, 1], - [1181713637872883048, 952589339068938148, 1828779826], - [12393932434925221726, 10058155040190817688, 50051639971], - [10684799845419711910, 5322725640026584391, 163545253677], - [4590318792215640843, 2269982385930389600, 45288545535], - [6383712187366189238, 13216683679976310224, 255123055991], - [1904270214927675016, 17417440642083494819, 119716477857], - [3711506775113308575, 3029180749090900711, 161944201349], - [8091219444738793995, 8315443826261908513, 133164212217], - [39436684991068052, 1488962797247197277, 249450781113], - [18025182908196512891, 18009099634999034122, 185080716834], - [7853924592034603138, 8092455412807497971, 34976275247], - [4815749283615688320, 17808458047236758329, 47438692886], - [14242399906544287744, 3164591817527425171, 22965398445], - [76242322576113664, 3314036340472350590, 173171552866], - [10858088421377703936, 33234902404332784, 98179654270], - [14293835879041466368, 12349284717857274280, 126001801667], - [12182236992037191680, 18209607903013119355, 195669456065], - [11529215046068469760, 7891549145984268038, 193987144822], - [0, 7703609897518594624, 118427801736], - [0, 6336912652634587136, 136417613529], - [0, 4461621834659397632, 217343524723], - [0, 5484660635557953536, 115241865004], - [0, 15142619273265938432, 44297324048], - [0, 12170977992968765440, 16820883035], - [0, 1152921504606846976, 91659790039], - [0, 0, 215062500000], - [0, 0, 160000000000], - [14000097438505379162, 514755, 0], - [16451062686452429925, 514755758946802, 0], - [4009347599785716645, 17812314011563521031, 27904], - [16544162347546196456, 7684138864490314336, 965607477], - [17674258299745817187, 9740522787420029605, 53416558002], - [5215238411201214416, 6701109407732989894, 178528034798], - [14253990228345322571, 16534886227502443952, 238363267868], - [11214836553940194590, 8908667306968317910, 28896357978], - [14620711348380590101, 7531472173477105155, 90482939822], - [6638710787931587427, 11527371604834801166, 174408281924], - [17320000343692853250, 15688593496691078576, 68624900066], - [75147386268843646, 11394944804253312188, 226850480357], - [17938801582125480173, 11182279880854372627, 229617721195], - [6573358613626446145, 150579373068361470, 107606192607], - [8688505427903736481, 3147220002440857300, 223008162924], - [539870168696556032, 3630514817795505815, 108170611138], - [9002861336394465280, 11708796588334233588, 194196810602], - [17989846818158018560, 16844495466426369546, 106634735134], - [2700938287723315200, 17636655472325475902, 30913141928], - [17800090499088908288, 17038926655686645229, 168956085008], - [8809040871136690176, 15602838456783529415, 16923682064], - [9223372036854775808, 10869815869248876790, 16845831567], - [0, 18407124180939800832, 143589253898], - [0, 5705018517251293184, 10997852201], - [0, 9660452258743058432, 41309269673], - [0, 5646292272224927744, 169523694166], - [0, 7410409304047484928, 86306086117], - [0, 5953758707383795712, 229401719093], - [0, 4611686018427387904, 53322753906], - [0, 0, 114250000000], - [0, 0, 128000000000], - [15763656745260536568, 7, 0], - [8787336846248645550, 7854549544, 0], - [17584084447880694346, 7854549544476362484, 0], - [18041672551129683938, 15035424419724983, 425795984], - [14025886302294509785, 18280822466032836292, 144000815071], - [18430498103283160734, 11524250747302615283, 223991005371], - [3292348826238025833, 15212285943691810760, 187624730884], - [9211721212658275243, 7951804027551297019, 4824659673], - [10233245872666307519, 1706416229965221847, 217431068160], - [6200995035623311671, 3406023111930700826, 92505009], - [8480542380570450804, 16132696204133391302, 177184640882], - [11870363864499900506, 11593846688794356915, 114874555213], - [9301051379839581901, 6875759884161133906, 77628503688], - [11456694803569638005, 3593593325323835965, 136372735690], - [14327208890643983169, 9542049733257388925, 202194809084], - [4510081789599866365, 9926551925937787518, 252517275552], - [13255356976020303332, 3128491553219547895, 160538119458], - [9658806854127314944, 17158408656931354885, 34169595866], - [13708435528809971712, 2065169543154992616, 218930159197], - [1580190652103131136, 4832622393556232739, 93111953065], - [16557336970347413504, 16505930714733656162, 169261976984], - [12751520132434493440, 18270988073492888699, 152894788296], - [9295429630892703744, 2525111411519708523, 200990472248], - [0, 16728989342518570442, 56136886563], - [0, 7974052022039438336, 35906880329], - [0, 5356554962386550784, 73432274226], - [0, 6693869495028547584, 50290379426], - [0, 8157517147199766528, 162362875392], - [0, 12065776720423157760, 442219890], - [0, 11997589407315001344, 114654087066], - [0, 0, 154650390625], - [0, 0, 97000000000], - [16872870088062921306, 119850, 0], - [5112979788807802982, 119850914680120, 0], - [13742728082020150272, 2418433229320326037, 6497], - [2217110934613627976, 1143911773589293534, 97131103528], - [11021433940188610484, 9276183703610924928, 40062011581], - [1713669895470733463, 3532180128827684715, 189502862926], - [3313382510572018285, 8563997501322031543, 78191479868], - [14976595232784069505, 14843890409658460681, 60464255234], - [7213172372862496841, 9489417861634552678, 2804688911], - [15836474542502248588, 1113198223322322089, 15514422373], - [3221099285878340134, 11190777557146597869, 101060346596], - [3265814602578095358, 17764553645932638286, 228606653266], - [6502528252282225364, 14900777150991234852, 82963018382], - [16392476834556790183, 17364899863357893610, 142807772747], - [15167629413417091342, 15537570181590167037, 75941353107], - [1366763272626280111, 5558052627121307766, 147842293367], - [8720523635169216093, 12095241565795232609, 119301302636], - [9649171375767398672, 2187936505958366389, 108655684359], - [7647980704001073152, 12009203621325860228, 7118608275], - [13286434495608651776, 14814842834750302952, 147651020232], - [4358271637167013888, 5965296499605198833, 200803114239], - [15954987941890097152, 4051026394962148842, 255323379371], - [7911135695429697536, 16799526299141688349, 171219606580], - [7205759403792793600, 9460214166646215205, 52910704145], - [0, 10750736995029068008, 17512839237], - [0, 5377963045376430080, 69582798620], - [0, 15996910350253424640, 28291539960], - [0, 13651157529655246848, 248867194247], - [0, 9771305410219737088, 135740030732], - [0, 12709439623416250368, 12529703527], - [0, 9943947977234055168, 103688980102], - [0, 0, 134539062500], - [0, 0, 228000000000], - [952589339068938148, 1828779826, 0], - [10058155040190817688, 1828779826051639971, 0], - [5322725640026584391, 371564423966525229, 99138353], - [2269982385930389600, 14464859121514339583, 49020142547], - [13216683679976310224, 3913119023023056247, 211784141584], - [17417440642083494819, 5493396321716566945, 16212130607], - [3029180749090900711, 5837454566818211973, 47297797611], - [8315443826261908513, 2886670683193253881, 235316449046], - [1488962797247197277, 5504823105587173817, 22156486731], - [18009099634999034122, 9431834277334851106, 75298417058], - [8092455412807497971, 12921661346456247087, 162511300760], - [17808458047236758329, 3643076516404724246, 152700484665], - [3164591817527425171, 12559396953196866477, 57197491573], - [3314036340472350590, 1626880974916825698, 117680846273], - [33234902404332784, 6806994170946429566, 193088193394], - [12349284717857274280, 7596631230206896579, 114369007893], - [18209607903013119355, 3100480253729502401, 21411814204], - [7891549145984268038, 6310570748781063286, 60168077371], - [7703609897518594624, 14251867077375744136, 59342096725], - [6336912652634587136, 6701165793751570137, 85772595262], - [4461621834659397632, 10856833140463959923, 62363270925], - [5484660635557953536, 15867563727561248556, 13588550103], - [15142619273265938432, 5048961008671491600, 215860182353], - [12170977992968765440, 13278183119599849051, 81273704724], - [1152921504606846976, 4547591784941053655, 20719811749], - [0, 11815437715887182496, 165246525444], - [0, 398495392178782208, 4640516162], - [0, 9154841240825495552, 66021602478], - [0, 1902683298245640192, 174496284938], - [0, 5081900962138816512, 10103144668], - [0, 3234710432358858752, 220275490403], - [0, 16717361816799281152, 99175354003], - [0, 0, 147906250000], - [0, 0, 16000000000], - [17812314011563521031, 27904, 0], +pub(crate) static POW10_SPLIT_2: [[u64; 3]; 3133] = [ + [ 0, 0, 3906250 ], + [ 0, 0, 202000000000 ], + [ 0, 11153727427136454656, 59 ], + [ 0, 7205759403792793600, 59604644775 ], + [ 0, 0, 167390625000 ], + [ 0, 0, 232000000000 ], + [ 0, 16777216000000000, 0 ], + [ 0, 12945425605062557696, 909494 ], + [ 0, 4388757836872548352, 182701772928 ], + [ 0, 1152921504606846976, 128237915039 ], + [ 0, 0, 159062500000 ], + [ 0, 0, 160000000000 ], + [ 0, 256000000000, 0 ], + [ 0, 16192327041775828992, 13 ], + [ 0, 15024075324038053888, 13877787807 ], + [ 0, 5449091666327633920, 159814456755 ], + [ 0, 2494994193563254784, 179295395851 ], + [ 0, 4611686018427387904, 11135253906 ], + [ 0, 0, 146250000000 ], + [ 0, 0, 128000000000 ], + [ 0, 3906250, 0 ], + [ 0, 3906250000000000, 0 ], + [ 0, 4368439412768899072, 211758 ], + [ 0, 1563676642168012800, 46236813575 ], + [ 0, 11532349341402398720, 7084767080 ], + [ 0, 9048364970084925440, 104625169910 ], + [ 0, 16609275425742389248, 246490512847 ], + [ 0, 0, 207900390625 ], + [ 0, 0, 225000000000 ], + [ 11153727427136454656, 59, 0 ], + [ 7205759403792793600, 59604644775, 0 ], + [ 0, 4264412554261970152, 3 ], + [ 0, 14485570586272534528, 3231174267 ], + [ 0, 17827675094632103936, 123785264354 ], + [ 0, 7347197909193981952, 226966440203 ], + [ 0, 13677404030777688064, 11398292396 ], + [ 0, 3810326759732150272, 172741453558 ], + [ 0, 9943947977234055168, 246206558227 ], + [ 0, 0, 19539062500 ], + [ 0, 0, 228000000000 ], + [ 12945425605062557696, 909494, 0 ], + [ 4388757836872548352, 909494701772928, 0 ], + [ 1152921504606846976, 14878706826214591391, 49303 ], + [ 0, 4387341015746028192, 151806576313 ], + [ 0, 651726680428265472, 185237838233 ], + [ 0, 2570638187944738816, 153035330174 ], + [ 0, 7419175577111756800, 126139354575 ], + [ 0, 17299322326264840192, 207402194313 ], + [ 0, 7990511638862102528, 137937798142 ], + [ 0, 16717361816799281152, 254433166503 ], + [ 0, 0, 167906250000 ], + [ 0, 0, 16000000000 ], + [ 16192327041775828992, 13, 0 ], + [ 15024075324038053888, 13877787807, 0 ], + [ 5449091666327633920, 13877787807814456755, 0 ], + [ 2494994193563254784, 9707857417284919307, 752316384 ], + [ 4611686018427387904, 1844515466944871826, 224526264005 ], + [ 0, 15167599819856275072, 197099991383 ], + [ 0, 14830185305589481472, 87822237233 ], + [ 0, 6163721531743535104, 49803945956 ], + [ 0, 14122847407012052992, 228334136013 ], + [ 0, 335491783960035328, 205765601092 ], + [ 0, 941252322120433664, 68018187046 ], + [ 0, 11529215046068469760, 38051025390 ], + [ 0, 0, 238625000000 ], + [ 0, 0, 64000000000 ], + [ 4368439412768899072, 211758, 0 ], + [ 1563676642168012800, 211758236813575, 0 ], + [ 11532349341402398720, 8061591463141767016, 11479 ], + [ 9048364970084925440, 16628725344207857142, 215437019748 ], + [ 16609275425742389248, 3555541870038531535, 100901445007 ], + [ 0, 18316647450161853665, 143192746310 ], + [ 0, 16709574568378075648, 70992947447 ], + [ 0, 7696022835795591168, 247905827852 ], + [ 0, 16664449640376041472, 12417202233 ], + [ 0, 3109186955116544000, 57903381625 ], + [ 0, 10515518101817131008, 121168549362 ], + [ 0, 9961962375743537152, 242570047378 ], + [ 0, 9223372036854775808, 146540039062 ], + [ 0, 0, 150500000000 ], + [ 14485570586272534528, 3231174267, 0 ], + [ 17827675094632103936, 3231174267785264354, 0 ], + [ 7347197909193981952, 748977172262750475, 175162308 ], + [ 13677404030777688064, 15965033457315095468, 196040602133 ], + [ 3810326759732150272, 16809402149066729206, 21865466197 ], + [ 9943947977234055168, 7563769067065700371, 85911239516 ], + [ 0, 13550322810840051428, 92410032742 ], + [ 0, 8663209637545764864, 102734564471 ], + [ 0, 8969247575312957440, 119469633535 ], + [ 0, 6193172891660451840, 255486223885 ], + [ 0, 3427954273864908800, 13335732575 ], + [ 0, 10058367555266936832, 95185829773 ], + [ 0, 13907115649320091648, 141545265197 ], + [ 0, 0, 45753906250 ], + [ 0, 0, 74000000000 ], + [ 14878706826214591391, 49303, 0 ], + [ 4387341015746028192, 49303806576313, 0 ], + [ 651726680428265472, 14106411361315920281, 2672 ], + [ 2570638187944738816, 3609034283485221502, 112764710092 ], + [ 7419175577111756800, 9896072247338192335, 204195646140 ], + [ 17299322326264840192, 8889095178479228297, 188536467151 ], + [ 7990511638862102528, 3631796911038383102, 207481878815 ], + [ 16717361816799281152, 898318840772166823, 31196880105 ], + [ 0, 17293677953982795024, 233048697961 ], + [ 0, 7353628266884669440, 105937492160 ], + [ 0, 2404693032470315008, 192398640987 ], + [ 0, 9191155893041889280, 91130358670 ], + [ 0, 6353946855033798656, 142498253559 ], + [ 0, 3767824038248841216, 247344448149 ], + [ 0, 7205759403792793600, 149204254150 ], + [ 0, 0, 198390625000 ], + [ 0, 0, 232000000000 ], + [ 9707857417284919307, 752316384, 0 ], + [ 1844515466944871826, 752316384526264005, 0 ], + [ 15167599819856275072, 17063068157692817751, 40783152 ], + [ 14830185305589481472, 5385330256507239985, 48924990778 ], + [ 6163721531743535104, 3373050282752075748, 58291939338 ], + [ 14122847407012052992, 4116064001262906061, 10182853422 ], + [ 335491783960035328, 11306582046748043076, 46223132276 ], + [ 941252322120433664, 17035410946089626406, 116612931040 ], + [ 11529215046068469760, 15618595715183448558, 224923491477 ], + [ 0, 5141740092277295680, 149846685770 ], + [ 0, 16973644291514990592, 74278734288 ], + [ 0, 14625255268443750400, 208920143100 ], + [ 0, 14021170507320131584, 252792836676 ], + [ 0, 4451355232865091584, 68760089176 ], + [ 0, 12891553933348044800, 88241308450 ], + [ 0, 1152921504606846976, 34698852539 ], + [ 0, 0, 187062500000 ], + [ 0, 0, 160000000000 ], + [ 8061591463141767016, 11479, 0 ], + [ 16628725344207857142, 11479437019748, 0 ], + [ 3555541870038531535, 5562205901560339855, 622 ], + [ 18316647450161853665, 2106077949367544134, 110301527786 ], + [ 16709574568378075648, 7496855998374373623, 234114170714 ], + [ 7696022835795591168, 229183437194837004, 90406405378 ], + [ 16664449640376041472, 465169186276472889, 2012424059 ], + [ 3109186955116544000, 2152980561625316473, 123025216872 ], + [ 10515518101817131008, 2059790725449340402, 104116713310 ], + [ 9961962375743537152, 17891190926410198930, 94111661478 ], + [ 9223372036854775808, 9930696175609809814, 166969883403 ], + [ 0, 7276914261609005312, 11538344118 ], + [ 0, 10539762974036983808, 182394482312 ], + [ 0, 12851089458992250880, 136571361695 ], + [ 0, 9449311677678878720, 159696658955 ], + [ 0, 8699564697382289408, 11512248212 ], + [ 0, 4224376450473525248, 148471604347 ], + [ 0, 4611686018427387904, 123229003906 ], + [ 0, 0, 130250000000 ], + [ 0, 0, 128000000000 ], + [ 748977172262750475, 175162308, 0 ], + [ 15965033457315095468, 175162308040602133, 0 ], + [ 16809402149066729206, 13756840147955779925, 9495567 ], + [ 7563769067065700371, 13788447602092505948, 15745759798 ], + [ 13550322810840051428, 4972540435632173670, 54747473242 ], + [ 8663209637545764864, 2844874687533091959, 90269561957 ], + [ 8969247575312957440, 15377573779532804095, 101154220965 ], + [ 6193172891660451840, 17824715805091194381, 165833619944 ], + [ 3427954273864908800, 18277569135638159711, 232966279779 ], + [ 10058367555266936832, 4254645803379752845, 99990829008 ], + [ 13907115649320091648, 2933643244178200621, 208230644811 ], + [ 0, 17188148801879487562, 75159033118 ], + [ 0, 11069762501163246592, 30931771413 ], + [ 0, 11676570643941818368, 21600093027 ], + [ 0, 17840016768744030208, 99632988162 ], + [ 0, 16463817321652158464, 2967109246 ], + [ 0, 6954191143357644800, 126892505325 ], + [ 0, 5080060379673919488, 237376987457 ], + [ 0, 0, 65275390625 ], + [ 0, 0, 161000000000 ], + [ 14106411361315920281, 2672, 0 ], + [ 3609034283485221502, 2672764710092, 0 ], + [ 9896072247338192335, 16433563478020213436, 144 ], + [ 8889095178479228297, 4194750497955655375, 144890865261 ], + [ 3631796911038383102, 2691539602252904735, 109227397880 ], + [ 898318840772166823, 3775467271962795241, 248145908654 ], + [ 17293677953982795024, 16980212613224918121, 174204668490 ], + [ 7353628266884669440, 4172857038337333440, 74920499170 ], + [ 2404693032470315008, 5936867627376461659, 226226211033 ], + [ 9191155893041889280, 17856837443266866062, 217321838238 ], + [ 6353946855033798656, 8956297047799810807, 158968021097 ], + [ 3767824038248841216, 15356974049716912789, 105485521835 ], + [ 7205759403792793600, 6923608913322982854, 171832503231 ], + [ 0, 4855902993563955944, 191375329591 ], + [ 0, 13835893222288330752, 55263239028 ], + [ 0, 9114973913760137216, 116750045274 ], + [ 0, 17937099003422310400, 90494123725 ], + [ 0, 7007960010734960640, 205972372085 ], + [ 0, 7683422439270776832, 117379902273 ], + [ 0, 720575940379279360, 65416519165 ], + [ 0, 0, 253039062500 ], + [ 0, 0, 228000000000 ], + [ 17063068157692817751, 40783152, 0 ], + [ 5385330256507239985, 40783152924990778, 0 ], + [ 3373050282752075748, 2768933352715741194, 2210859 ], + [ 4116064001262906061, 15201941611824153390, 43150104177 ], + [ 11306582046748043076, 1418128541727000180, 113824098906 ], + [ 17035410946089626406, 5353350204565757408, 90076876902 ], + [ 15618595715183448558, 1721001680354286741, 102290205696 ], + [ 5141740092277295680, 637631411660453962, 93295688 ], + [ 16973644291514990592, 1630012588870568400, 72034566068 ], + [ 14625255268443750400, 9253063571656828156, 180088363159 ], + [ 14021170507320131584, 6029146854993203780, 151501609581 ], + [ 4451355232865091584, 16987401965352759896, 109326840705 ], + [ 12891553933348044800, 14499131620542087970, 129920888905 ], + [ 1152921504606846976, 1978417255298660539, 73785999500 ], + [ 0, 5790079354402454176, 140107250214 ], + [ 0, 13748918935842078720, 38313880830 ], + [ 0, 18047438014740692992, 254745330388 ], + [ 0, 3116889656839372800, 212978353575 ], + [ 0, 15995952446606147584, 167168966926 ], + [ 0, 12530140063251562496, 14867142319 ], + [ 0, 16717361816799281152, 175679260253 ], + [ 0, 0, 93906250000 ], + [ 0, 0, 16000000000 ], + [ 5562205901560339855, 622, 0 ], + [ 2106077949367544134, 622301527786, 0 ], + [ 7496855998374373623, 13558973353698967386, 33 ], + [ 229183437194837004, 6228991722850501890, 33735033418 ], + [ 465169186276472889, 16886831391703377787, 74337674317 ], + [ 2152980561625316473, 1181713637872883048, 77915436964 ], + [ 2059790725449340402, 12393932434925221726, 164064060824 ], + [ 17891190926410198930, 10684799845419711910, 152671876423 ], + [ 9930696175609809814, 4590318792215640843, 71579224160 ], + [ 7276914261609005312, 6383712187366189238, 96248841680 ], + [ 10539762974036983808, 1904270214927675016, 208346061731 ], + [ 12851089458992250880, 3711506775113308575, 163103230695 ], + [ 9449311677678878720, 8091219444738793995, 231201201185 ], + [ 8699564697382289408, 39436684991068052, 33438625885 ], + [ 4224376450473525248, 18025182908196512891, 93002137866 ], + [ 4611686018427387904, 7853924592034603138, 10977147123 ], + [ 0, 4815749283615688320, 243425762105 ], + [ 0, 14242399906544287744, 57261062291 ], + [ 0, 76242322576113664, 147772082046 ], + [ 0, 10858088421377703936, 126004133104 ], + [ 0, 14293835879041466368, 240588618152 ], + [ 0, 12182236992037191680, 168774870395 ], + [ 0, 11529215046068469760, 123660400390 ], + [ 0, 0, 6625000000 ], + [ 0, 0, 64000000000 ], + [ 13756840147955779925, 9495567, 0 ], + [ 13788447602092505948, 9495567745759798, 0 ], + [ 4972540435632173670, 14000097438505379162, 514755 ], + [ 2844874687533091959, 16451062686452429925, 195758946802 ], + [ 15377573779532804095, 4009347599785716645, 242891813895 ], + [ 17824715805091194381, 16544162347546196456, 7217347168 ], + [ 18277569135638159711, 17674258299745817187, 96896860837 ], + [ 4254645803379752845, 5215238411201214416, 165958123462 ], + [ 2933643244178200621, 14253990228345322571, 198282718640 ], + [ 17188148801879487562, 11214836553940194590, 176772710358 ], + [ 11069762501163246592, 14620711348380590101, 214607957507 ], + [ 11676570643941818368, 6638710787931587427, 3792590350 ], + [ 17840016768744030208, 17320000343692853250, 14359885232 ], + [ 16463817321652158464, 75147386268843646, 176938919100 ], + [ 6954191143357644800, 17938801582125480173, 188004073747 ], + [ 5080060379673919488, 6573358613626446145, 19972464382 ], + [ 0, 8688505427903736481, 254356342484 ], + [ 0, 539870168696556032, 212471004823 ], + [ 0, 9002861336394465280, 151029266420 ], + [ 0, 17989846818158018560, 244488046090 ], + [ 0, 2700938287723315200, 10975231550 ], + [ 0, 17800090499088908288, 62146418157 ], + [ 0, 8809040871136690176, 237964944839 ], + [ 0, 9223372036854775808, 199477539062 ], + [ 0, 0, 246500000000 ], + [ 16433563478020213436, 144, 0 ], + [ 4194750497955655375, 144890865261, 0 ], + [ 2691539602252904735, 15763656745260536568, 7 ], + [ 3775467271962795241, 8787336846248645550, 7854549544 ], + [ 16980212613224918121, 17584084447880694346, 40476362484 ], + [ 4172857038337333440, 18041672551129683938, 244953235127 ], + [ 5936867627376461659, 14025886302294509785, 183978041028 ], + [ 17856837443266866062, 18430498103283160734, 196760344819 ], + [ 8956297047799810807, 3292348826238025833, 243999119304 ], + [ 15356974049716912789, 9211721212658275243, 200178478587 ], + [ 6923608913322982854, 10233245872666307519, 251499368407 ], + [ 4855902993563955944, 6200995035623311671, 215554745370 ], + [ 13835893222288330752, 8480542380570450804, 26336156614 ], + [ 9114973913760137216, 11870363864499900506, 198459731123 ], + [ 17937099003422310400, 9301051379839581901, 179643493714 ], + [ 7007960010734960640, 11456694803569638005, 82504211005 ], + [ 7683422439270776832, 14327208890643983169, 61621068669 ], + [ 720575940379279360, 4510081789599866365, 125776679550 ], + [ 0, 13255356976020303332, 126244492023 ], + [ 0, 9658806854127314944, 247718574341 ], + [ 0, 13708435528809971712, 5523604968 ], + [ 0, 1580190652103131136, 232743135779 ], + [ 0, 16557336970347413504, 35085662306 ], + [ 0, 12751520132434493440, 98897575035 ], + [ 0, 9295429630892703744, 123691261291 ], + [ 0, 0, 107503906250 ], + [ 0, 0, 202000000000 ], + [ 2768933352715741194, 2210859, 0 ], + [ 15201941611824153390, 2210859150104177, 0 ], + [ 1418128541727000180, 16872870088062921306, 119850 ], + [ 5353350204565757408, 5112979788807802982, 42914680120 ], + [ 1721001680354286741, 13742728082020150272, 56277175189 ], + [ 637631411660453962, 2217110934613627976, 149744994782 ], + [ 1630012588870568400, 11021433940188610484, 222120189824 ], + [ 9253063571656828156, 1713669895470733463, 128597473131 ], + [ 6029146854993203780, 3313382510572018285, 107092898231 ], + [ 16987401965352759896, 14976595232784069505, 183179618825 ], + [ 14499131620542087970, 7213172372862496841, 9811882854 ], + [ 1978417255298660539, 15836474542502248588, 102391026857 ], + [ 5790079354402454176, 3221099285878340134, 169858497005 ], + [ 13748918935842078720, 3265814602578095358, 237174616142 ], + [ 18047438014740692992, 6502528252282225364, 78177040164 ], + [ 3116889656839372800, 16392476834556790183, 36352502762 ], + [ 15995952446606147584, 15167629413417091342, 234888637949 ], + [ 12530140063251562496, 1366763272626280111, 253822238838 ], + [ 16717361816799281152, 8720523635169216093, 118074092385 ], + [ 0, 9649171375767398672, 97472740533 ], + [ 0, 7647980704001073152, 181523082628 ], + [ 0, 13286434495608651776, 132414597864 ], + [ 0, 4358271637167013888, 232720259057 ], + [ 0, 15954987941890097152, 241236262378 ], + [ 0, 7911135695429697536, 234864921629 ], + [ 0, 7205759403792793600, 29428863525 ], + [ 0, 0, 37390625000 ], + [ 0, 0, 232000000000 ], + [ 13558973353698967386, 33, 0 ], + [ 6228991722850501890, 33735033418, 0 ], + [ 16886831391703377787, 15288289344628122701, 1 ], + [ 1181713637872883048, 952589339068938148, 1828779826 ], + [ 12393932434925221726, 10058155040190817688, 50051639971 ], + [ 10684799845419711910, 5322725640026584391, 163545253677 ], + [ 4590318792215640843, 2269982385930389600, 45288545535 ], + [ 6383712187366189238, 13216683679976310224, 255123055991 ], + [ 1904270214927675016, 17417440642083494819, 119716477857 ], + [ 3711506775113308575, 3029180749090900711, 161944201349 ], + [ 8091219444738793995, 8315443826261908513, 133164212217 ], + [ 39436684991068052, 1488962797247197277, 249450781113 ], + [ 18025182908196512891, 18009099634999034122, 185080716834 ], + [ 7853924592034603138, 8092455412807497971, 34976275247 ], + [ 4815749283615688320, 17808458047236758329, 47438692886 ], + [ 14242399906544287744, 3164591817527425171, 22965398445 ], + [ 76242322576113664, 3314036340472350590, 173171552866 ], + [ 10858088421377703936, 33234902404332784, 98179654270 ], + [ 14293835879041466368, 12349284717857274280, 126001801667 ], + [ 12182236992037191680, 18209607903013119355, 195669456065 ], + [ 11529215046068469760, 7891549145984268038, 193987144822 ], + [ 0, 7703609897518594624, 118427801736 ], + [ 0, 6336912652634587136, 136417613529 ], + [ 0, 4461621834659397632, 217343524723 ], + [ 0, 5484660635557953536, 115241865004 ], + [ 0, 15142619273265938432, 44297324048 ], + [ 0, 12170977992968765440, 16820883035 ], + [ 0, 1152921504606846976, 91659790039 ], + [ 0, 0, 215062500000 ], + [ 0, 0, 160000000000 ], + [ 14000097438505379162, 514755, 0 ], + [ 16451062686452429925, 514755758946802, 0 ], + [ 4009347599785716645, 17812314011563521031, 27904 ], + [ 16544162347546196456, 7684138864490314336, 965607477 ], + [ 17674258299745817187, 9740522787420029605, 53416558002 ], + [ 5215238411201214416, 6701109407732989894, 178528034798 ], + [ 14253990228345322571, 16534886227502443952, 238363267868 ], + [ 11214836553940194590, 8908667306968317910, 28896357978 ], + [ 14620711348380590101, 7531472173477105155, 90482939822 ], + [ 6638710787931587427, 11527371604834801166, 174408281924 ], + [ 17320000343692853250, 15688593496691078576, 68624900066 ], + [ 75147386268843646, 11394944804253312188, 226850480357 ], + [ 17938801582125480173, 11182279880854372627, 229617721195 ], + [ 6573358613626446145, 150579373068361470, 107606192607 ], + [ 8688505427903736481, 3147220002440857300, 223008162924 ], + [ 539870168696556032, 3630514817795505815, 108170611138 ], + [ 9002861336394465280, 11708796588334233588, 194196810602 ], + [ 17989846818158018560, 16844495466426369546, 106634735134 ], + [ 2700938287723315200, 17636655472325475902, 30913141928 ], + [ 17800090499088908288, 17038926655686645229, 168956085008 ], + [ 8809040871136690176, 15602838456783529415, 16923682064 ], + [ 9223372036854775808, 10869815869248876790, 16845831567 ], + [ 0, 18407124180939800832, 143589253898 ], + [ 0, 5705018517251293184, 10997852201 ], + [ 0, 9660452258743058432, 41309269673 ], + [ 0, 5646292272224927744, 169523694166 ], + [ 0, 7410409304047484928, 86306086117 ], + [ 0, 5953758707383795712, 229401719093 ], + [ 0, 4611686018427387904, 53322753906 ], + [ 0, 0, 114250000000 ], + [ 0, 0, 128000000000 ], + [ 15763656745260536568, 7, 0 ], + [ 8787336846248645550, 7854549544, 0 ], + [ 17584084447880694346, 7854549544476362484, 0 ], + [ 18041672551129683938, 15035424419724983, 425795984 ], + [ 14025886302294509785, 18280822466032836292, 144000815071 ], + [ 18430498103283160734, 11524250747302615283, 223991005371 ], + [ 3292348826238025833, 15212285943691810760, 187624730884 ], + [ 9211721212658275243, 7951804027551297019, 4824659673 ], + [ 10233245872666307519, 1706416229965221847, 217431068160 ], + [ 6200995035623311671, 3406023111930700826, 92505009 ], + [ 8480542380570450804, 16132696204133391302, 177184640882 ], + [ 11870363864499900506, 11593846688794356915, 114874555213 ], + [ 9301051379839581901, 6875759884161133906, 77628503688 ], + [ 11456694803569638005, 3593593325323835965, 136372735690 ], + [ 14327208890643983169, 9542049733257388925, 202194809084 ], + [ 4510081789599866365, 9926551925937787518, 252517275552 ], + [ 13255356976020303332, 3128491553219547895, 160538119458 ], + [ 9658806854127314944, 17158408656931354885, 34169595866 ], + [ 13708435528809971712, 2065169543154992616, 218930159197 ], + [ 1580190652103131136, 4832622393556232739, 93111953065 ], + [ 16557336970347413504, 16505930714733656162, 169261976984 ], + [ 12751520132434493440, 18270988073492888699, 152894788296 ], + [ 9295429630892703744, 2525111411519708523, 200990472248 ], + [ 0, 16728989342518570442, 56136886563 ], + [ 0, 7974052022039438336, 35906880329 ], + [ 0, 5356554962386550784, 73432274226 ], + [ 0, 6693869495028547584, 50290379426 ], + [ 0, 8157517147199766528, 162362875392 ], + [ 0, 12065776720423157760, 442219890 ], + [ 0, 11997589407315001344, 114654087066 ], + [ 0, 0, 154650390625 ], + [ 0, 0, 97000000000 ], + [ 16872870088062921306, 119850, 0 ], + [ 5112979788807802982, 119850914680120, 0 ], + [ 13742728082020150272, 2418433229320326037, 6497 ], + [ 2217110934613627976, 1143911773589293534, 97131103528 ], + [ 11021433940188610484, 9276183703610924928, 40062011581 ], + [ 1713669895470733463, 3532180128827684715, 189502862926 ], + [ 3313382510572018285, 8563997501322031543, 78191479868 ], + [ 14976595232784069505, 14843890409658460681, 60464255234 ], + [ 7213172372862496841, 9489417861634552678, 2804688911 ], + [ 15836474542502248588, 1113198223322322089, 15514422373 ], + [ 3221099285878340134, 11190777557146597869, 101060346596 ], + [ 3265814602578095358, 17764553645932638286, 228606653266 ], + [ 6502528252282225364, 14900777150991234852, 82963018382 ], + [ 16392476834556790183, 17364899863357893610, 142807772747 ], + [ 15167629413417091342, 15537570181590167037, 75941353107 ], + [ 1366763272626280111, 5558052627121307766, 147842293367 ], + [ 8720523635169216093, 12095241565795232609, 119301302636 ], + [ 9649171375767398672, 2187936505958366389, 108655684359 ], + [ 7647980704001073152, 12009203621325860228, 7118608275 ], + [ 13286434495608651776, 14814842834750302952, 147651020232 ], + [ 4358271637167013888, 5965296499605198833, 200803114239 ], + [ 15954987941890097152, 4051026394962148842, 255323379371 ], + [ 7911135695429697536, 16799526299141688349, 171219606580 ], + [ 7205759403792793600, 9460214166646215205, 52910704145 ], + [ 0, 10750736995029068008, 17512839237 ], + [ 0, 5377963045376430080, 69582798620 ], + [ 0, 15996910350253424640, 28291539960 ], + [ 0, 13651157529655246848, 248867194247 ], + [ 0, 9771305410219737088, 135740030732 ], + [ 0, 12709439623416250368, 12529703527 ], + [ 0, 9943947977234055168, 103688980102 ], + [ 0, 0, 134539062500 ], + [ 0, 0, 228000000000 ], + [ 952589339068938148, 1828779826, 0 ], + [ 10058155040190817688, 1828779826051639971, 0 ], + [ 5322725640026584391, 371564423966525229, 99138353 ], + [ 2269982385930389600, 14464859121514339583, 49020142547 ], + [ 13216683679976310224, 3913119023023056247, 211784141584 ], + [ 17417440642083494819, 5493396321716566945, 16212130607 ], + [ 3029180749090900711, 5837454566818211973, 47297797611 ], + [ 8315443826261908513, 2886670683193253881, 235316449046 ], + [ 1488962797247197277, 5504823105587173817, 22156486731 ], + [ 18009099634999034122, 9431834277334851106, 75298417058 ], + [ 8092455412807497971, 12921661346456247087, 162511300760 ], + [ 17808458047236758329, 3643076516404724246, 152700484665 ], + [ 3164591817527425171, 12559396953196866477, 57197491573 ], + [ 3314036340472350590, 1626880974916825698, 117680846273 ], + [ 33234902404332784, 6806994170946429566, 193088193394 ], + [ 12349284717857274280, 7596631230206896579, 114369007893 ], + [ 18209607903013119355, 3100480253729502401, 21411814204 ], + [ 7891549145984268038, 6310570748781063286, 60168077371 ], + [ 7703609897518594624, 14251867077375744136, 59342096725 ], + [ 6336912652634587136, 6701165793751570137, 85772595262 ], + [ 4461621834659397632, 10856833140463959923, 62363270925 ], + [ 5484660635557953536, 15867563727561248556, 13588550103 ], + [ 15142619273265938432, 5048961008671491600, 215860182353 ], + [ 12170977992968765440, 13278183119599849051, 81273704724 ], + [ 1152921504606846976, 4547591784941053655, 20719811749 ], + [ 0, 11815437715887182496, 165246525444 ], + [ 0, 398495392178782208, 4640516162 ], + [ 0, 9154841240825495552, 66021602478 ], + [ 0, 1902683298245640192, 174496284938 ], + [ 0, 5081900962138816512, 10103144668 ], + [ 0, 3234710432358858752, 220275490403 ], + [ 0, 16717361816799281152, 99175354003 ], + [ 0, 0, 147906250000 ], + [ 0, 0, 16000000000 ], + [ 17812314011563521031, 27904, 0 ], + [ 7684138864490314336, 27904965607477, 0 ], + [ 9740522787420029605, 13488568028574514610, 1512 ], + [ 6701109407732989894, 275784718433886190, 232731216738 ], + [ 16534886227502443952, 10020568880357102364, 98014950319 ], + [ 8908667306968317910, 8876397213146246746, 175543216127 ], + [ 7531472173477105155, 2155905919114811310, 255481190457 ], + [ 11527371604834801166, 1087100407155601220, 57116871894 ], + [ 15688593496691078576, 2903498381705011170, 214058931831 ], + [ 11394944804253312188, 12223476257006657765, 119157398962 ], + [ 11182279880854372627, 12148657163736735595, 178662635975 ], + [ 150579373068361470, 8951241323311673823, 199658580024 ], + [ 3147220002440857300, 8463862715901576300, 56485247764 ], + [ 3630514817795505815, 3873401978748963266, 20458826917 ], + [ 11708796588334233588, 248364795947002730, 165209977542 ], + [ 16844495466426369546, 10454378025404001822, 198013463882 ], + [ 17636655472325475902, 6574176865628265640, 74566732968 ], + [ 17038926655686645229, 16703315293848336, 168356386842 ], + [ 15602838456783529415, 9896033222450013456, 26000905488 ], + [ 10869815869248876790, 17311376269334085007, 16536465035 ], + [ 18407124180939800832, 18378511316495639306, 139938451587 ], + [ 5705018517251293184, 15120796393727584297, 131996301094 ], + [ 9660452258743058432, 18253447805740347049, 38819700014 ], + [ 5646292272224927744, 5842497225601731158, 46989521388 ], + [ 7410409304047484928, 4369968404176723173, 236316722409 ], + [ 5953758707383795712, 16142207253674488117, 233236896461 ], + [ 4611686018427387904, 12124259227391928178, 205875070808 ], + [ 0, 13019483264566077056, 88657257409 ], + [ 0, 74901376448135168, 193705787602 ], + [ 0, 13897060093813325824, 210004060411 ], + [ 0, 4495486210810052608, 251753361137 ], + [ 0, 14885496280087265280, 241243700795 ], + [ 0, 4976477588244398080, 59806944370 ], + [ 0, 11529215046068469760, 114269775390 ], + [ 0, 0, 30625000000 ], + [ 0, 0, 64000000000 ], + [ 15035424419724983, 425795984, 0 ], + [ 18280822466032836292, 425795984000815071, 0 ], + [ 11524250747302615283, 10043594327130472635, 23082446 ], + [ 15212285943691810760, 8336034337032909060, 206544464339 ], + [ 7951804027551297019, 16717215784895280857, 211451897326 ], + [ 1706416229965221847, 10968831263951212032, 238906242083 ], + [ 3406023111930700826, 5536629379734406065, 35594621534 ], + [ 16132696204133391302, 1618806894932332402, 94300141280 ], + [ 11593846688794356915, 11363331325254998861, 224087755697 ], + [ 6875759884161133906, 8775167772751754888, 177616007425 ], + [ 3593593325323835965, 2898202945316114122, 1475702798 ], + [ 9542049733257388925, 8868842714495185148, 14157111896 ], + [ 9926551925937787518, 17052094667531999136, 88480780926 ], + [ 3128491553219547895, 3658615537031138594, 126924395904 ], + [ 17158408656931354885, 12486952437987190746, 128198333945 ], + [ 2065169543154992616, 912079238520577629, 249676919048 ], + [ 4832622393556232739, 10960072898031888041, 8049443914 ], + [ 16505930714733656162, 6129550094334741912, 74594146742 ], + [ 18270988073492888699, 7965724516573729480, 182332283576 ], + [ 2525111411519708523, 5801761178810791992, 184431822791 ], + [ 16728989342518570442, 13197466483098446115, 199314514103 ], + [ 7974052022039438336, 11326268638393107273, 183715436091 ], + [ 5356554962386550784, 3597339351794947378, 59613998253 ], + [ 6693869495028547584, 353880726151383714, 173195012157 ], + [ 8157517147199766528, 11154818162602073600, 61019183912 ], + [ 12065776720423157760, 5141043976157511026, 40604703904 ], + [ 11997589407315001344, 7188225141808859034, 160278696552 ], + [ 0, 13894168943295705185, 104389674465 ], + [ 0, 12176538069834828288, 225753204407 ], + [ 0, 7994239409235165184, 183660091451 ], + [ 0, 13707777025480065024, 59433368586 ], + [ 0, 10120227247676719104, 10743100081 ], + [ 0, 7358494763030413312, 177548618618 ], + [ 0, 7656119366529843200, 122398904800 ], + [ 0, 9223372036854775808, 224415039062 ], + [ 0, 0, 86500000000 ], + [ 2418433229320326037, 6497, 0 ], + [ 1143911773589293534, 6497131103528, 0 ], + [ 9276183703610924928, 3877189582299842749, 352 ], + [ 3532180128827684715, 7625565791857948238, 96210182868 ], + [ 8563997501322031543, 16568435163612007484, 212413382749 ], + [ 14843890409658460681, 17592071940521808130, 93898176669 ], + [ 9489417861634552678, 15158637878035490831, 157953668130 ], + [ 1113198223322322089, 17789243229146401893, 34821751405 ], + [ 11190777557146597869, 14677686051252896484, 109964356807 ], + [ 17764553645932638286, 3531237481269211986, 199795678955 ], + [ 14900777150991234852, 8074435404989280910, 235191428767 ], + [ 17364899863357893610, 7086549341467684427, 159437716020 ], + [ 15537570181590167037, 10556134770918626963, 52384162609 ], + [ 5558052627121307766, 10772666134712966775, 49572249212 ], + [ 12095241565795232609, 6195173298198112620, 124583987401 ], + [ 2187936505958366389, 8144773843324250887, 201335841017 ], + [ 12009203621325860228, 14144284817150924691, 249441529074 ], + [ 14814842834750302952, 6464447844648863176, 242766763216 ], + [ 5965296499605198833, 15760468443293179135, 208350438419 ], + [ 4051026394962148842, 5172191224908322475, 19854376706 ], + [ 16799526299141688349, 2357554307308969012, 2280385048 ], + [ 9460214166646215205, 1602046917604361745, 24127803275 ], + [ 10750736995029068008, 7830970218109515845, 139086847137 ], + [ 5377963045376430080, 2899479134887821084, 161424517746 ], + [ 15996910350253424640, 15792042302392017912, 114157181078 ], + [ 13651157529655246848, 11286099112296056199, 150856088328 ], + [ 9771305410219737088, 15161477829153947404, 8611820658 ], + [ 12709439623416250368, 423831848142641767, 114821905360 ], + [ 9943947977234055168, 9707413321046312582, 208022975970 ], + [ 0, 10969483299803835620, 226526239930 ], + [ 0, 4326479556120930304, 186594656881 ], + [ 0, 12876227232041795584, 113234538926 ], + [ 0, 16967986827791171584, 174698021676 ], + [ 0, 1288146316538413056, 44919836409 ], + [ 0, 13715290452691779584, 249069830551 ], + [ 0, 4683743612465315840, 151743507385 ], + [ 0, 0, 185253906250 ], + [ 0, 0, 74000000000 ], + [ 371564423966525229, 99138353, 0 ], + [ 14464859121514339583, 99138353020142547, 0 ], + [ 3913119023023056247, 16344805304534272784, 5374300 ], + [ 5493396321716566945, 26429987091348271, 92886053671 ], + [ 5837454566818211973, 8691371289609838059, 39001432772 ], + [ 2886670683193253881, 12980168378493046550, 196471160181 ], + [ 5504823105587173817, 14010125458129496139, 117703656337 ], + [ 9431834277334851106, 17061829677031795106, 145759490422 ], + [ 12921661346456247087, 2227928323072698520, 118924923640 ], + [ 3643076516404724246, 7394752319272287289, 248120776236 ], + [ 12559396953196866477, 8805771303577744757, 44400870326 ], + [ 1626880974916825698, 16371027194302248385, 182477361818 ], + [ 6806994170946429566, 9114324123731231602, 154887475162 ], + [ 7596631230206896579, 14468189808746991893, 218494088500 ], + [ 3100480253729502401, 2376054557800684348, 52784322141 ], + [ 6310570748781063286, 12462238943546048571, 93128806175 ], + [ 14251867077375744136, 15334855370842605909, 31675579326 ], + [ 6701165793751570137, 7211347914013798462, 190831304175 ], + [ 10856833140463959923, 13763642332572548877, 239390927953 ], + [ 15867563727561248556, 16868268377740071383, 81746128545 ], + [ 5048961008671491600, 1120013377627684177, 161914430661 ], + [ 13278183119599849051, 15898107650717274388, 197060716046 ], + [ 4547591784941053655, 12281923376333274277, 14861838142 ], + [ 11815437715887182496, 6383530489286615044, 62665804400 ], + [ 398495392178782208, 4253822060257126466, 112346051881 ], + [ 9154841240825495552, 17614372438391501998, 41230600155 ], + [ 1902683298245640192, 4309951310554333450, 219954877043 ], + [ 5081900962138816512, 13106185988973773020, 115233642928 ], + [ 3234710432358858752, 2070134359761960547, 176710487766 ], + [ 16717361816799281152, 9399359914137865875, 214112222208 ], + [ 0, 17415053284723541264, 509540321 ], + [ 0, 4840502610448261120, 225944071930 ], + [ 0, 5690599259712258048, 250262404172 ], + [ 0, 114769594245185536, 76308488004 ], + [ 0, 3150620882578178048, 68006221672 ], + [ 0, 5136918324969472000, 104170795500 ], + [ 0, 7205759403792793600, 236278472900 ], + [ 0, 0, 196390625000 ], + [ 0, 0, 232000000000 ], + [ 13488568028574514610, 1512, 0 ], + [ 275784718433886190, 1512731216738, 0 ], + [ 10020568880357102364, 98202693831717807, 82 ], + [ 8876397213146246746, 12909287260170414079, 82005323578 ], + [ 2155905919114811310, 11728631949380786233, 58699813864 ], + [ 1087100407155601220, 18263701925522197718, 232635810411 ], + [ 2903498381705011170, 4868886449713321591, 107990077265 ], + [ 12223476257006657765, 5870139507184082354, 81263942863 ], + [ 12148657163736735595, 5978562500822661575, 207318220900 ], + [ 8951241323311673823, 10821136839630268472, 100324098522 ], + [ 8463862715901576300, 9490907630136752916, 218586615003 ], + [ 3873401978748963266, 10564005678001613989, 219514503133 ], + [ 248364795947002730, 5754050547468481222, 221572675895 ], + [ 10454378025404001822, 3833909949855542602, 55311927705 ], + [ 6574176865628265640, 15446538552665967784, 153207836674 ], + [ 16703315293848336, 14924837848804399130, 2837358532 ], + [ 9896033222450013456, 18140170340418344208, 196809077080 ], + [ 17311376269334085007, 11380424819825208971, 88983380604 ], + [ 18378511316495639306, 12416915664152252547, 124616934065 ], + [ 15120796393727584297, 17195282241626289958, 177673122346 ], + [ 18253447805740347049, 2649541045825281326, 42932158118 ], + [ 5842497225601731158, 16577429864268509676, 166143631907 ], + [ 4369968404176723173, 12051257060168107241, 35898664273 ], + [ 16142207253674488117, 5363884561143470797, 81653299954 ], + [ 12124259227391928178, 13054029903083620184, 242290776764 ], + [ 13019483264566077056, 566314952158634945, 188707660379 ], + [ 74901376448135168, 1329472079642345682, 91030699995 ], + [ 13897060093813325824, 15686237486658857211, 219072070825 ], + [ 4495486210810052608, 1069073549290598129, 169850352638 ], + [ 14885496280087265280, 4323599065125928507, 254057954593 ], + [ 4976477588244398080, 17861823329752681586, 33234382774 ], + [ 11529215046068469760, 17220149985412802078, 182968291382 ], + [ 0, 4344934572159429184, 54933506201 ], + [ 0, 2252927464837120000, 153235539375 ], + [ 0, 10910018171964489728, 175122131442 ], + [ 0, 3597328585515335680, 242591433270 ], + [ 0, 6972808074239148032, 54195011573 ], + [ 0, 2227030015734710272, 245377996683 ], + [ 0, 1152921504606846976, 139120727539 ], + [ 0, 0, 243062500000 ], + [ 0, 0, 160000000000 ], + [ 10043594327130472635, 23082446, 0 ], + [ 8336034337032909060, 23082446544464339, 0 ], + [ 16717215784895280857, 17238287503805244910, 1251301 ], + [ 10968831263951212032, 1434575446038410275, 229934489438 ], + [ 5536629379734406065, 14009569747841241694, 94077768490 ], + [ 1618806894932332402, 14938795732275951328, 42759460297 ], + [ 11363331325254998861, 6687653542888983473, 201809833739 ], + [ 8775167772751754888, 28238723295162625, 11362538425 ], + [ 2898202945316114122, 4745270274832691214, 185001530824 ], + [ 8868842714495185148, 926478968112308824, 200257241617 ], + [ 17052094667531999136, 9213681606604198526, 17050224525 ], + [ 3658615537031138594, 13346223820579313024, 141499474680 ], + [ 12486952437987190746, 691642518601291257, 248723500243 ], + [ 912079238520577629, 1153720150033789192, 211037494016 ], + [ 10960072898031888041, 12089015034721780810, 62543294 ], + [ 6129550094334741912, 3555868702841788854, 190655346818 ], + [ 7965724516573729480, 11708406782758214328, 130192764028 ], + [ 5801761178810791992, 9417497762905343943, 124634714003 ], + [ 13197466483098446115, 12838336066957615287, 147510523576 ], + [ 11326268638393107273, 13737708142128207419, 184695967592 ], + [ 3597339351794947378, 11683434809834695853, 104744722650 ], + [ 353880726151383714, 2689114340106315837, 218633360270 ], + [ 11154818162602073600, 8859225263374261032, 142145777180 ], + [ 5141043976157511026, 15761671984578600096, 28480259563 ], + [ 7188225141808859034, 7087267079878005352, 235854441950 ], + [ 13894168943295705185, 4601291730423121377, 222384201518 ], + [ 12176538069834828288, 9559411037059581623, 46249436524 ], + [ 7994239409235165184, 12969820289641388091, 108518216710 ], + [ 13707777025480065024, 13628239920285957130, 6703095366 ], + [ 10120227247676719104, 8049893933765800625, 70738788366 ], + [ 7358494763030413312, 10391755948840250234, 14436385624 ], + [ 7656119366529843200, 14454650777462444512, 88563338218 ], + [ 9223372036854775808, 14244638523341127254, 234783588188 ], + [ 0, 12246016810439753984, 92772203401 ], + [ 0, 9382741764551081984, 137663857901 ], + [ 0, 4608696190291148800, 237508639450 ], + [ 0, 1696483666416369664, 218249837921 ], + [ 0, 15416683541605384192, 97091966563 ], + [ 0, 7683140964294066176, 99835740089 ], + [ 0, 4611686018427387904, 185416503906 ], + [ 0, 0, 98250000000 ], + [ 0, 0, 128000000000 ], + [ 3877189582299842749, 352, 0 ], + [ 7625565791857948238, 352210182868, 0 ], + [ 16568435163612007484, 1722045467931902045, 19 ], + [ 17592071940521808130, 16095324008152856733, 19093352271 ], + [ 15158637878035490831, 15216188060094280738, 79872529262 ], + [ 17789243229146401893, 10793385929903030893, 110824871207 ], + [ 14677686051252896484, 12613277226875940039, 39585110623 ], + [ 3531237481269211986, 10644539625155600107, 95683767128 ], + [ 8074435404989280910, 6181262895644173983, 88577041649 ], + [ 7086549341467684427, 148914399627082292, 241335086933 ], + [ 10556134770918626963, 14379289774887985969, 85008072665 ], + [ 10772666134712966775, 11743339675582627452, 217779502860 ], + [ 6195173298198112620, 7841621929809463497, 12636607719 ], + [ 8144773843324250887, 11168944680251236601, 231425095176 ], + [ 14144284817150924691, 6178560202529287410, 8605469704 ], + [ 6464447844648863176, 13295243308201596112, 8334940419 ], + [ 15760468443293179135, 17040673746172470291, 3720736583 ], + [ 5172191224908322475, 14957442487039409922, 71923776774 ], + [ 2357554307308969012, 17778155426506992152, 6810844581 ], + [ 1602046917604361745, 14945404984219733899, 165963755736 ], + [ 7830970218109515845, 11590754866058681505, 216810192027 ], + [ 2899479134887821084, 6020790784469412466, 155628336080 ], + [ 15792042302392017912, 7934351824569522326, 208326387722 ], + [ 11286099112296056199, 5038361112172116744, 10430122074 ], + [ 15161477829153947404, 3305187319649924210, 90273130103 ], + [ 423831848142641767, 11470175511099161552, 119179174563 ], + [ 9707413321046312582, 7308362160352048610, 163621799460 ], + [ 10969483299803835620, 10666410671225576634, 36396187106 ], + [ 4326479556120930304, 2181639019945820785, 226578227281 ], + [ 12876227232041795584, 4615749499734847918, 81118266888 ], + [ 16967986827791171584, 14076159200958497580, 8250220281 ], + [ 1288146316538413056, 5470405257862074105, 249763070119 ], + [ 13715290452691779584, 4565741478181339543, 167296551263 ], + [ 4683743612465315840, 8901832997861862329, 95247509341 ], + [ 0, 14190141170191714122, 93482569333 ], + [ 0, 4240772322245764096, 117769249094 ], + [ 0, 4422842195340951552, 70229892728 ], + [ 0, 15448426386733137920, 120239762755 ], + [ 0, 9203504548935630848, 67837460872 ], + [ 0, 5936377627571912704, 136498922981 ], + [ 0, 468374361246531584, 229321811676 ], + [ 0, 0, 220025390625 ], + [ 0, 0, 33000000000 ], + [ 16344805304534272784, 5374300, 0 ], + [ 26429987091348271, 5374300886053671, 0 ], + [ 8691371289609838059, 8020875056524075716, 291341 ], + [ 12980168378493046550, 1400288714762747253, 13434812508 ], + [ 14010125458129496139, 6136037711314764689, 92075909803 ], + [ 17061829677031795106, 15735488086392394102, 171332635270 ], + [ 2227928323072698520, 7735094782793634552, 134853022518 ], + [ 7394752319272287289, 7273689191766726188, 54419320328 ], + [ 8805771303577744757, 3410634565056431030, 8394307481 ], + [ 16371027194302248385, 4600927904885215898, 153184890870 ], + [ 9114324123731231602, 9154871331680374746, 246249416801 ], + [ 14468189808746991893, 6117978272461042996, 97496286569 ], + [ 2376054557800684348, 13116904339287496285, 105331656266 ], + [ 12462238943546048571, 867037205615660831, 74711068809 ], + [ 15334855370842605909, 1802487145191504830, 137047002181 ], + [ 7211347914013798462, 17242009718457409007, 69097713023 ], + [ 13763642332572548877, 13620802355488468049, 127934691219 ], + [ 16868268377740071383, 4442227880594435745, 147738385175 ], + [ 1120013377627684177, 17354849212854314181, 23240813655 ], + [ 15898107650717274388, 18202319179831567886, 87940808260 ], + [ 12281923376333274277, 17568634016348874558, 68986749699 ], + [ 6383530489286615044, 7496925598312450672, 3952397558 ], + [ 4253822060257126466, 601870379496813865, 246406409151 ], + [ 17614372438391501998, 11995106565680728027, 191032627458 ], + [ 4309951310554333450, 16331071694764184179, 2650256029 ], + [ 13106185988973773020, 9665962217000524208, 157885309170 ], + [ 2070134359761960547, 13682661374415474390, 242523992861 ], + [ 9399359914137865875, 6940361789924260864, 29741738559 ], + [ 17415053284723541264, 9658039831644010465, 63376237766 ], + [ 4840502610448261120, 6843715893910236922, 198523563388 ], + [ 5690599259712258048, 47089792870595660, 124370998582 ], + [ 114769594245185536, 14510386192097156932, 54002552742 ], + [ 3150620882578178048, 12059931208360040296, 166786609611 ], + [ 5136918324969472000, 14877013468459184620, 203653770180 ], + [ 7205759403792793600, 2397668560671695044, 196806484516 ], + [ 0, 2195572305559232232, 36129977873 ], + [ 0, 3261686279425953792, 17119022213 ], + [ 0, 9333850662059900928, 133176816367 ], + [ 0, 5036522340217782272, 239505989058 ], + [ 0, 2800120215143186432, 194273030423 ], + [ 0, 441634238459019264, 23151794821 ], + [ 0, 720575940379279360, 133023941040 ], + [ 0, 0, 176039062500 ], + [ 0, 0, 228000000000 ], + [ 98202693831717807, 82, 0 ], + [ 12909287260170414079, 82005323578, 0 ], + [ 11728631949380786233, 8218347283861607400, 4 ], + [ 18263701925522197718, 17896200385973633643, 4445517498 ], + [ 4868886449713321591, 16333242102094352209, 186970154966 ], + [ 5870139507184082354, 9981905728606788815, 214885426828 ], + [ 5978562500822661575, 15219470018924839012, 140541120193 ], + [ 10821136839630268472, 17152070168529617370, 193825049122 ], + [ 9490907630136752916, 17841343440958328027, 34929815586 ], + [ 10564005678001613989, 17291078023923990493, 34967181165 ], + [ 5754050547468481222, 16744804581790759223, 109937351217 ], + [ 3833909949855542602, 5001622214111594905, 49907737675 ], + [ 15446538552665967784, 9676746897435398146, 75271138483 ], + [ 14924837848804399130, 8109025833995118532, 179524577500 ], + [ 18140170340418344208, 5495826424046694744, 220439591171 ], + [ 11380424819825208971, 7890288164365705852, 3297929347 ], + [ 12416915664152252547, 8616438349039895217, 131427733378 ], + [ 17195282241626289958, 15787154801788760618, 130467098058 ], + [ 2649541045825281326, 12418659311480782502, 202855823376 ], + [ 16577429864268509676, 4486988874116669987, 16673216870 ], + [ 12051257060168107241, 4828971301551875409, 102243240154 ], + [ 5363884561143470797, 14769106422014442226, 218261779058 ], + [ 13054029903083620184, 7763933466423188156, 114800634863 ], + [ 566314952158634945, 10449097116253839963, 239420883676 ], + [ 1329472079642345682, 12870692502472900571, 220566446689 ], + [ 15686237486658857211, 11597479481311003817, 97697721638 ], + [ 1069073549290598129, 8294994869530047486, 38628700622 ], + [ 4323599065125928507, 16879315829924478241, 206449672572 ], + [ 17861823329752681586, 11873324837601439670, 124915029544 ], + [ 17220149985412802078, 3277599055636107318, 40643654229 ], + [ 4344934572159429184, 15363467897354242201, 85177679000 ], + [ 2252927464837120000, 10351182204479784367, 152832855263 ], + [ 10910018171964489728, 12811517584931924466, 223561138711 ], + [ 3597328585515335680, 16988930699558748726, 23694513759 ], + [ 6972808074239148032, 11683499918824718325, 95920971778 ], + [ 2227030015734710272, 13119300691281647499, 2633363799 ], + [ 1152921504606846976, 10125549106595354099, 87711198715 ], + [ 0, 17505352699870800544, 251548907116 ], + [ 0, 6756039242241163264, 108948967071 ], + [ 0, 3537338758766526464, 159366245621 ], + [ 0, 6522626374119718912, 245191759518 ], + [ 0, 4733294203482669056, 158353592284 ], + [ 0, 16997710893603094528, 220256592392 ], + [ 0, 16717361816799281152, 8921447753 ], + [ 0, 0, 73906250000 ], + [ 0, 0, 16000000000 ], + [ 17238287503805244910, 1251301, 0 ], + [ 1434575446038410275, 1251301934489438, 0 ], + [ 14009569747841241694, 3943737498063000362, 67833 ], + [ 14938795732275951328, 2870731037991212489, 249213790438 ], + [ 6687653542888983473, 7389433400402095883, 230155622641 ], + [ 28238723295162625, 5675049236146197433, 241400581987 ], + [ 4745270274832691214, 9953779846262904264, 99307645035 ], + [ 926478968112308824, 12691978937179636241, 107539595486 ], + [ 9213681606604198526, 15523327331528198029, 222688033556 ], + [ 13346223820579313024, 15722603279568118520, 20841521260 ], + [ 691642518601291257, 11838632364171816147, 108852324031 ], + [ 1153720150033789192, 7832751832367143680, 191641773546 ], + [ 12089015034721780810, 12167724027162940862, 234424614327 ], + [ 3555868702841788854, 4108211144748152962, 183659613641 ], + [ 11708406782758214328, 7530983398136343676, 201222706572 ], + [ 9417497762905343943, 1117587133956542355, 140408255428 ], + [ 12838336066957615287, 17134748625149490872, 196060584519 ], + [ 13737708142128207419, 4039918359454207848, 71928876584 ], + [ 11683434809834695853, 1830218764589441242, 40219004413 ], + [ 2689114340106315837, 637895981480825742, 253099216358 ], + [ 8859225263374261032, 8246879226348334620, 230034580410 ], + [ 15761671984578600096, 12389239568142583275, 186447064218 ], + [ 7087267079878005352, 14041257178803154398, 154671622022 ], + [ 4601291730423121377, 16312515716494630702, 134761178076 ], + [ 9559411037059581623, 17088522799596987756, 220884303248 ], + [ 12969820289641388091, 3588932524637852678, 144926370677 ], + [ 13628239920285957130, 107218049069817414, 117194556422 ], + [ 8049893933765800625, 1596707240462008334, 6005812302 ], + [ 10391755948840250234, 17461913142391587672, 78086557672 ], + [ 14454650777462444512, 4366474266651610090, 232946612208 ], + [ 14244638523341127254, 5539304013194805084, 240236707044 ], + [ 12246016810439753984, 4762470619211987849, 228300286272 ], + [ 9382741764551081984, 10835638458986644717, 64258174049 ], + [ 4608696190291148800, 16141642290510052058, 97587401137 ], + [ 1696483666416369664, 17390568670756355425, 177875040181 ], + [ 15416683541605384192, 12536768491333867107, 181942744616 ], + [ 7683140964294066176, 13145148522871947193, 40679619581 ], + [ 4611686018427387904, 5665349945233068642, 253712599929 ], + [ 0, 17074607537751066240, 121307119235 ], + [ 0, 6241525660962062336, 131925616329 ], + [ 0, 1142860629783085056, 201338353784 ], + [ 0, 16287527416870469632, 120061954598 ], + [ 0, 9028002014738513920, 38882948630 ], + [ 0, 16217462258161156096, 22489408969 ], + [ 0, 11529215046068469760, 201879150390 ], + [ 0, 0, 54625000000 ], + [ 0, 0, 64000000000 ], + [ 1722045467931902045, 19, 0 ], + [ 16095324008152856733, 19093352271, 0 ], + [ 15216188060094280738, 646608198162977646, 1 ], + [ 10793385929903030893, 12170458846894708007, 1035052700 ], + [ 12613277226875940039, 1797330480103086687, 156659761896 ], + [ 10644539625155600107, 10332188564497263448, 232097433480 ], + [ 6181262895644173983, 7524259485079594225, 136560109064 ], + [ 148914399627082292, 62681109059153749, 8407890924 ], + [ 14379289774887985969, 13480636451804037081, 236003397949 ], + [ 11743339675582627452, 6948168233012789004, 61730786766 ], + [ 7841621929809463497, 12015502974041806055, 206376660954 ], + [ 11168944680251236601, 7343801660689004040, 218651361721 ], + [ 6178560202529287410, 13670580858640731144, 185398108285 ], + [ 13295243308201596112, 5605073897566574851, 125741083673 ], + [ 17040673746172470291, 15387788940505247559, 25303851664 ], + [ 14957442487039409922, 17565181499678113030, 144834173709 ], + [ 17778155426506992152, 1893743623847493029, 13952210397 ], + [ 14945404984219733899, 10243498996716269784, 221102660047 ], + [ 11590754866058681505, 5619675836950314139, 207555301193 ], + [ 6020790784469412466, 10224869737511515088, 73304643237 ], + [ 7934351824569522326, 2574495974386198538, 165554291299 ], + [ 5038361112172116744, 7825756347302873178, 99139563706 ], + [ 3305187319649924210, 12071550103794656887, 186424235101 ], + [ 11470175511099161552, 7195875213867606691, 93654400042 ], + [ 7308362160352048610, 18271364438406891044, 42390089176 ], + [ 10666410671225576634, 16966521933952564706, 216990492650 ], + [ 2181639019945820785, 289920862029570129, 234919756997 ], + [ 4615749499734847918, 7804199568098625032, 197015716641 ], + [ 14076159200958497580, 5758118571242446585, 33423066506 ], + [ 5470405257862074105, 4030788293606375591, 138312148233 ], + [ 4565741478181339543, 4387716460037196127, 9218509471 ], + [ 8901832997861862329, 16807506478881285981, 159237858585 ], + [ 14190141170191714122, 17033060604413529717, 25911136751 ], + [ 4240772322245764096, 10498418508292170054, 239923364065 ], + [ 4422842195340951552, 13237752038744465016, 225569120407 ], + [ 15448426386733137920, 17737618428304633155, 151717619975 ], + [ 9203504548935630848, 13546183833248825736, 7961558221 ], + [ 5936377627571912704, 826778452978976229, 205734340097 ], + [ 468374361246531584, 13728076626990147292, 1044819749 ], + [ 0, 2794860281883592225, 37744200525 ], + [ 0, 8680705720425908736, 77151509679 ], + [ 0, 731520517439488000, 175470582000 ], + [ 0, 13120812320768917504, 240039655806 ], + [ 0, 2722954908557901824, 126711280661 ], + [ 0, 6860847004205973504, 21147611681 ], + [ 0, 6503197861922996224, 33371927261 ], + [ 0, 9223372036854775808, 221352539062 ], + [ 0, 0, 182500000000 ], + [ 8020875056524075716, 291341, 0 ], + [ 1400288714762747253, 291341434812508, 0 ], + [ 6136037711314764689, 12005656413127238315, 15793 ], + [ 15735488086392394102, 4821130826186787462, 177650827938 ], + [ 7735094782793634552, 14377899467066168118, 162261354025 ], + [ 7273689191766726188, 16575613239625444872, 41779427491 ], + [ 3410634565056431030, 4317827099179284377, 163898565794 ], + [ 4600927904885215898, 1242354770412171254, 162234069876 ], + [ 9154871331680374746, 994838588328896609, 116067348187 ], + [ 6117978272461042996, 17283309862013060457, 219053930307 ], + [ 13116904339287496285, 124242522249856586, 67936930105 ], + [ 867037205615660831, 11564608014666985609, 57006735200 ], + [ 1802487145191504830, 12401028575581654085, 96626918656 ], + [ 17242009718457409007, 2490725392961465727, 672261106 ], + [ 13620802355488468049, 1949482237120640915, 242135022494 ], + [ 4442227880594435745, 15410502396166200087, 158105681643 ], + [ 17354849212854314181, 15694919529799920727, 235835405008 ], + [ 18202319179831567886, 10324869370171768388, 208850823292 ], + [ 17568634016348874558, 1631866459122189059, 124559712290 ], + [ 7496925598312450672, 172020494461226230, 34088463658 ], + [ 601870379496813865, 12734610307908856767, 42009325249 ], + [ 11995106565680728027, 1467513250829340930, 193690344608 ], + [ 16331071694764184179, 13558759428494307997, 160079554052 ], + [ 9665962217000524208, 7915355143999496434, 4735021821 ], + [ 13682661374415474390, 2876370200608797469, 253429092262 ], + [ 6940361789924260864, 343685370404989503, 166155928341 ], + [ 9658039831644010465, 4837266557407634630, 21018631221 ], + [ 6843715893910236922, 9622591415747161468, 53262228745 ], + [ 47089792870595660, 16503783814424220982, 9521641725 ], + [ 14510386192097156932, 5377083431343591334, 253894671913 ], + [ 12059931208360040296, 16508482371299291595, 41291492276 ], + [ 14877013468459184620, 10515883558812249028, 180894926622 ], + [ 2397668560671695044, 63492062913405476, 30570067190 ], + [ 2195572305559232232, 11571919759617799697, 246003441911 ], + [ 3261686279425953792, 2956602334970088581, 247627315027 ], + [ 9333850662059900928, 13604736747717849839, 83160277733 ], + [ 5036522340217782272, 16573540719338151362, 229737514256 ], + [ 2800120215143186432, 12620703004601168151, 16898453442 ], + [ 441634238459019264, 14649407809089591941, 194684169680 ], + [ 720575940379279360, 11290375247898624432, 208794145988 ], + [ 0, 11020319450292874212, 196612052468 ], + [ 0, 8754634933362354176, 244597412714 ], + [ 0, 12976319450332528640, 106474589710 ], + [ 0, 17447331119627239424, 14703447686 ], + [ 0, 3665184902673858560, 134945821715 ], + [ 0, 12949678516038795264, 19198690071 ], + [ 0, 72057594037927936, 23702003479 ], + [ 0, 0, 23003906250 ], + [ 0, 0, 202000000000 ], + [ 8218347283861607400, 4, 0 ], + [ 17896200385973633643, 4445517498, 0 ], + [ 16333242102094352209, 4445517498970154966, 0 ], + [ 9981905728606788815, 9413159735776077452, 240991986 ], + [ 15219470018924839012, 14279163482889998017, 242510288411 ], + [ 17152070168529617370, 8693044629541194274, 27774075003 ], + [ 17841343440958328027, 11863110253260222498, 123471250893 ], + [ 17291078023923990493, 8319293368489531245, 205643100495 ], + [ 16744804581790759223, 3376307525676489265, 79450989797 ], + [ 5001622214111594905, 13205662254759912523, 229183029997 ], + [ 9676746897435398146, 5276250334231686323, 237715880385 ], + [ 8109025833995118532, 13790198520922745052, 193286026103 ], + [ 5495826424046694744, 14195535250150996227, 119747568159 ], + [ 7890288164365705852, 16425228796427004035, 31769541507 ], + [ 8616438349039895217, 4295900841296269186, 131890413437 ], + [ 15787154801788760618, 4533952595483946442, 125232881251 ], + [ 12418659311480782502, 12885038019373447184, 99245786062 ], + [ 4486988874116669987, 12140736240487831910, 206698499310 ], + [ 4828971301551875409, 6927124077155322074, 238658150630 ], + [ 14769106422014442226, 12477788342407819890, 230375520148 ], + [ 7763933466423188156, 7980854329409711087, 148676422261 ], + [ 10449097116253839963, 2062671021810827996, 117432642980 ], + [ 12870692502472900571, 2739521363598172769, 164111817620 ], + [ 11597479481311003817, 12897585686593465638, 148148509750 ], + [ 8294994869530047486, 1127632646629044686, 54699179521 ], + [ 16879315829924478241, 4833775019274666364, 1061129088 ], + [ 11873324837601439670, 15867662672939849256, 128262039468 ], + [ 3277599055636107318, 2092350330982953557, 172860187717 ], + [ 15363467897354242201, 13330062299842493592, 69113426538 ], + [ 10351182204479784367, 4479193352178519263, 106722624125 ], + [ 12811517584931924466, 3149393938889064983, 125242817558 ], + [ 16988930699558748726, 9736379904070620767, 22170728987 ], + [ 11683499918824718325, 3816238703055069186, 27527810212 ], + [ 13119300691281647499, 11598915938798661975, 164206878714 ], + [ 10125549106595354099, 17821633264606555643, 250628778492 ], + [ 17505352699870800544, 2514623558764574316, 252966112675 ], + [ 6756039242241163264, 4976730480406253215, 163136318016 ], + [ 3537338758766526464, 17276563697191611637, 64269789099 ], + [ 6522626374119718912, 12524734095940998814, 171936564394 ], + [ 4733294203482669056, 15331551308930355164, 170678967195 ], + [ 16997710893603094528, 15417115581125943816, 155831125061 ], + [ 16717361816799281152, 6010750237807115593, 69835763510 ], + [ 0, 5624630987553628432, 54325843423 ], + [ 0, 14881848243837640704, 223304911856 ], + [ 0, 15281613886881529856, 240806746609 ], + [ 0, 14057902358273196032, 241828417948 ], + [ 0, 16075318494433902592, 156762080413 ], + [ 0, 13891916000577716224, 157871444761 ], + [ 0, 7205759403792793600, 25753082275 ], + [ 0, 0, 163390625000 ], + [ 0, 0, 232000000000 ], + [ 3943737498063000362, 67833, 0 ], + [ 2870731037991212489, 67833213790438, 0 ], + [ 7389433400402095883, 4535831408134330609, 3677 ], + [ 5675049236146197433, 6204770794376564579, 93245887913 ], + [ 9953779846262904264, 13869812122751887467, 169336361298 ], + [ 12691978937179636241, 14253229412394467550, 82751884021 ], + [ 15523327331528198029, 12776557610216045332, 245772669114 ], + [ 15722603279568118520, 16493640728678654060, 186692618575 ], + [ 11838632364171816147, 9434398296825833151, 79894122055 ], + [ 7832751832367143680, 8773374058285327850, 71511439756 ], + [ 12167724027162940862, 12932015276748029367, 140475605560 ], + [ 4108211144748152962, 16293958583527755209, 56701045952 ], + [ 7530983398136343676, 13511893936143127948, 192883297264 ], + [ 1117587133956542355, 18409936402005226436, 240732481237 ], + [ 17134748625149490872, 2189663026458466887, 213998004652 ], + [ 4039918359454207848, 9497725274248154664, 172118701870 ], + [ 1830218764589441242, 14766925481127792125, 46514872718 ], + [ 637895981480825742, 6982373971809635814, 142800516634 ], + [ 8246879226348334620, 8616702383006884794, 26378515251 ], + [ 12389239568142583275, 3059473300040871066, 51467112372 ], + [ 14041257178803154398, 17123843157031495558, 180165854379 ], + [ 16312515716494630702, 11210627174210626524, 171928285397 ], + [ 17088522799596987756, 15868067138625928592, 213607729316 ], + [ 3588932524637852678, 4467869511636937589, 164860209643 ], + [ 107218049069817414, 10052108125844341766, 235242203691 ], + [ 1596707240462008334, 7470588003218451534, 43544925873 ], + [ 17461913142391587672, 2613527085490786280, 177404981387 ], + [ 4366474266651610090, 3632919450036549616, 139141679587 ], + [ 5539304013194805084, 179367907231218916, 227196940958 ], + [ 4762470619211987849, 13553068184555874624, 158009723553 ], + [ 10835638458986644717, 8798774862365584481, 161734713298 ], + [ 16141642290510052058, 910911255817064881, 210476982541 ], + [ 17390568670756355425, 2304331144765093813, 13049380598 ], + [ 12536768491333867107, 12248937023083640360, 246124918041 ], + [ 13145148522871947193, 10206039550662130685, 25664016206 ], + [ 5665349945233068642, 12267881323837852537, 78553270512 ], + [ 17074607537751066240, 2858642007937891971, 240665043179 ], + [ 6241525660962062336, 14171330289750320841, 235154967293 ], + [ 1142860629783085056, 6601103619749017720, 253768229354 ], + [ 16287527416870469632, 4919573414486739494, 234357846544 ], + [ 9028002014738513920, 3401998285294974486, 16266690609 ], + [ 16217462258161156096, 10799436256515532233, 49184422696 ], + [ 11529215046068469760, 10083786644665753398, 40585438612 ], + [ 0, 6481194517685688896, 148546643169 ], + [ 0, 15104161756860547072, 225351346258 ], + [ 0, 9556039274244079616, 82818798249 ], + [ 0, 1376343134954323968, 169518033927 ], + [ 0, 15682488278596976640, 7074611710 ], + [ 0, 1506454075355430912, 254850149393 ], + [ 0, 1152921504606846976, 17081665039 ], + [ 0, 0, 15062500000 ], + [ 0, 0, 160000000000 ], + [ 12170458846894708007, 1035052700, 0 ], + [ 1797330480103086687, 1035052700659761896, 0 ], + [ 10332188564497263448, 6172559441576707976, 56110319 ], + [ 7524259485079594225, 15083329738554729992, 239334615117 ], + [ 62681109059153749, 10013126833549229036, 77817668943 ], + [ 13480636451804037081, 5817156823499936061, 79542812693 ], + [ 6948168233012789004, 5282692560913632718, 21315348703 ], + [ 12015502974041806055, 10252307034225766362, 223286375337 ], + [ 7343801660689004040, 17981881283247669689, 169555778677 ], + [ 13670580858640731144, 11689290159733383293, 117974799737 ], + [ 5605073897566574851, 5530668968487988249, 121633677689 ], + [ 15387788940505247559, 10083765740821947024, 121299818165 ], + [ 17565181499678113030, 2798423656816843533, 181546642036 ], + [ 1893743623847493029, 7614494481582904797, 116151702850 ], + [ 10243498996716269784, 17811318500083423695, 66412782572 ], + [ 5619675836950314139, 11641467412200329033, 236965553510 ], + [ 10224869737511515088, 17733593025296340645, 102631085212 ], + [ 2574495974386198538, 3689424000190644835, 156961340004 ], + [ 7825756347302873178, 14966634145516728506, 100200004075 ], + [ 12071550103794656887, 14171681941562070109, 235811342862 ], + [ 7195875213867606691, 8130575762882608170, 14768248417 ], + [ 18271364438406891044, 5234550794400656856, 97440759395 ], + [ 16966521933952564706, 3020576149360486378, 99283765567 ], + [ 289920862029570129, 3038675756589057221, 63163745761 ], + [ 7804199568098625032, 15470260187120878369, 225164726942 ], + [ 5758118571242446585, 3497929414841828746, 158838644485 ], + [ 4030788293606375591, 9935840636861015305, 5189623133 ], + [ 4387716460037196127, 3647355485153741471, 93538623000 ], + [ 16807506478881285981, 766100215038272793, 24197723537 ], + [ 17033060604413529717, 16128087474216800751, 145041530375 ], + [ 10498418508292170054, 16216631732633731297, 7874305373 ], + [ 13237752038744465016, 13760220872779997335, 93879105367 ], + [ 17737618428304633155, 3826276262374222087, 87745943068 ], + [ 13546183833248825736, 14938032745839181005, 28207422851 ], + [ 826778452978976229, 14479259995009508865, 131809792377 ], + [ 13728076626990147292, 2372033248156102437, 121784922257 ], + [ 2794860281883592225, 792005346826701645, 145128588180 ], + [ 8680705720425908736, 16278924527931792559, 148042934695 ], + [ 731520517439488000, 17442516423538940144, 167882482266 ], + [ 13120812320768917504, 13844184233048446, 90945560710 ], + [ 2722954908557901824, 13486193870480782357, 134000750494 ], + [ 6860847004205973504, 11931315179184648737, 158731088034 ], + [ 6503197861922996224, 16492562205587485405, 162646797891 ], + [ 9223372036854775808, 12128987217680380854, 67894063588 ], + [ 0, 10568123814189138176, 228657513714 ], + [ 0, 17007583519117541376, 242572899139 ], + [ 0, 143791533903052800, 67921982950 ], + [ 0, 12398714235792654336, 230007794954 ], + [ 0, 9659957317919047680, 10672135645 ], + [ 0, 9412523221204336640, 221523667335 ], + [ 0, 4611686018427387904, 135510253906 ], + [ 0, 0, 82250000000 ], + [ 0, 0, 128000000000 ], + [ 12005656413127238315, 15793, 0 ], + [ 4821130826186787462, 15793650827938, 0 ], + [ 14377899467066168118, 3237900842885170729, 856 ], + [ 16575613239625444872, 7515893506498066595, 88175526956 ], + [ 4317827099179284377, 7300206309181072546, 44407437403 ], + [ 1242354770412171254, 5999737279837044, 91395744977 ], + [ 994838588328896609, 7556839307242450651, 209000325246 ], + [ 17283309862013060457, 12946035041643640643, 126409657079 ], + [ 124242522249856586, 15885877642352740665, 247701805965 ], + [ 11564608014666985609, 10770818348246089568, 141861175152 ], + [ 12401028575581654085, 11635415503599551744, 112583887232 ], + [ 2490725392961465727, 6248053924100826098, 128630757138 ], + [ 1949482237120640915, 16894170802729859998, 18338707681 ], + [ 15410502396166200087, 6143589029651889899, 225915834834 ], + [ 15694919529799920727, 11812087701837886160, 210333044628 ], + [ 10324869370171768388, 7306705080150829180, 148640334557 ], + [ 1631866459122189059, 1485332570280714274, 221396097276 ], + [ 172020494461226230, 18042602303295630634, 252080520039 ], + [ 12734610307908856767, 13397029889257074369, 103978091430 ], + [ 1467513250829340930, 9948104869613411488, 166726254445 ], + [ 13558759428494307997, 10836066241170646532, 109539287845 ], + [ 7915355143999496434, 18330574781234459389, 37587424327 ], + [ 2876370200608797469, 666297360208433062, 71993702450 ], + [ 343685370404989503, 5035352224889324309, 50036120052 ], + [ 4837266557407634630, 1341745796439923765, 244272966991 ], + [ 9622591415747161468, 6846932182653803785, 79072736185 ], + [ 16503783814424220982, 6727685027257825533, 185371172937 ], + [ 5377083431343591334, 2168538874806877737, 73364708536 ], + [ 16508482371299291595, 17694936100676971444, 184117556727 ], + [ 10515883558812249028, 2163944241059563294, 247959244408 ], + [ 63492062913405476, 6727780864524301558, 120117307652 ], + [ 11571919759617799697, 8599551977795002615, 4364713731 ], + [ 2956602334970088581, 15428264807806859091, 3466182646 ], + [ 13604736747717849839, 2126771385339683557, 246836367911 ], + [ 16573540719338151362, 15094316562082972944, 39115292507 ], + [ 12620703004601168151, 8111300598225956802, 91818264540 ], + [ 14649407809089591941, 9481215200564260304, 220439714486 ], + [ 11290375247898624432, 16836674128623424708, 182513977705 ], + [ 11020319450292874212, 7087243115299722740, 105912717933 ], + [ 8754634933362354176, 2343560867338408810, 109384200219 ], + [ 12976319450332528640, 3431385749090422286, 27127044689 ], + [ 17447331119627239424, 3504545517469224582, 81186015794 ], + [ 3665184902673858560, 3333759805712094227, 50189981793 ], + [ 12949678516038795264, 3595183476205994775, 97180723481 ], + [ 72057594037927936, 14191566632569921303, 25194895286 ], + [ 0, 12917427671358095562, 182769326368 ], + [ 0, 3883793922738316288, 32700255157 ], + [ 0, 7857281689266421760, 181210540890 ], + [ 0, 15987081651486195712, 90425944093 ], + [ 0, 16827562156399525888, 29866661432 ], + [ 0, 7012737938513461248, 56912223972 ], + [ 0, 7385903388887613440, 228380161285 ], + [ 0, 0, 5400390625 ], + [ 0, 0, 225000000000 ], + [ 9413159735776077452, 240991986, 0 ], + [ 14279163482889998017, 240991986510288411, 0 ], + [ 8693044629541194274, 14135788013842776187, 13064201 ], + [ 11863110253260222498, 13284322918167594445, 9766302603 ], + [ 8319293368489531245, 7264587765474046287, 139720144588 ], + [ 3376307525676489265, 16176482219778368741, 204393814091 ], + [ 13205662254759912523, 5401983818872095469, 75876928858 ], + [ 5276250334231686323, 11208857446851049921, 90292842129 ], + [ 13790198520922745052, 13794690008281035639, 145607633379 ], + [ 14195535250150996227, 14519782740993303071, 227747811643 ], + [ 16425228796427004035, 10885858587044789123, 59787118999 ], + [ 4295900841296269186, 8710500938899914621, 151590123576 ], + [ 4533952595483946442, 1284182587483102819, 56472197202 ], + [ 12885038019373447184, 10346074482131502030, 82069615677 ], + [ 12140736240487831910, 9429804686255246574, 61560861821 ], + [ 6927124077155322074, 6412022633845121254, 125511190736 ], + [ 12477788342407819890, 8892351297529018260, 208347596443 ], + [ 7980854329409711087, 14098160105983060597, 155482055329 ], + [ 2062671021810827996, 13793833029739474340, 161764262790 ], + [ 2739521363598172769, 16367653765996977044, 134747765186 ], + [ 12897585686593465638, 10684788343333772342, 194887292288 ], + [ 1127632646629044686, 13272681218705145345, 128579223536 ], + [ 4833775019274666364, 11093568615497829248, 240719513490 ], + [ 15867662672939849256, 12488220765137758124, 146601383559 ], + [ 2092350330982953557, 3727114642519696453, 135676987804 ], + [ 13330062299842493592, 11549865375695057514, 156202047289 ], + [ 4479193352178519263, 11292809154908783229, 57626119456 ], + [ 3149393938889064983, 17723904861837310998, 32612184410 ], + [ 9736379904070620767, 14877674388187150875, 90960814807 ], + [ 3816238703055069186, 12178961950105734308, 215806520344 ], + [ 11598915938798661975, 4540604068069253114, 24660222850 ], + [ 17821633264606555643, 13832478722153359868, 130246146639 ], + [ 2514623558764574316, 1308046668730371491, 79749860174 ], + [ 4976730480406253215, 18400531023544756800, 78070909351 ], + [ 17276563697191611637, 9789823458621466539, 167997494785 ], + [ 12524734095940998814, 1924870562610267306, 1530707393 ], + [ 15331551308930355164, 5290016144582400923, 193104347442 ], + [ 15417115581125943816, 15162883663174059077, 50286772349 ], + [ 6010750237807115593, 8078086116520046390, 125821981570 ], + [ 5624630987553628432, 15731407332173190623, 130437913925 ], + [ 14881848243837640704, 5346389182763011056, 69852801300 ], + [ 15281613886881529856, 6368422217216252401, 20289828338 ], + [ 14057902358273196032, 2961453088119116188, 242345232860 ], + [ 16075318494433902592, 10932141691610170525, 220160540693 ], + [ 13891916000577716224, 11034016191361782553, 21592632588 ], + [ 7205759403792793600, 5455325785621453219, 12598155216 ], + [ 0, 7735615202566149352, 208295733803 ], + [ 0, 7502396497775759360, 43419348540 ], + [ 0, 1601286435751591936, 60406705729 ], + [ 0, 11449383158571597824, 65086805911 ], + [ 0, 13043944595690356736, 151620672304 ], + [ 0, 7773494431818186752, 48707113653 ], + [ 0, 9943947977234055168, 181421401977 ], + [ 0, 0, 121539062500 ], + [ 0, 0, 228000000000 ], + [ 4535831408134330609, 3677, 0 ], + [ 6204770794376564579, 3677245887913, 0 ], + [ 13869812122751887467, 6343817245135589714, 199 ], + [ 14253229412394467550, 17549323075660516085, 199343899021 ], + [ 12776557610216045332, 3948641822109421754, 141951350710 ], + [ 16493640728678654060, 1750739713693534543, 182214056302 ], + [ 9434398296825833151, 962163898128633415, 110094907790 ], + [ 8773374058285327850, 7967320249386531212, 142052159009 ], + [ 12932015276748029367, 3018466665533383224, 33431909296 ], + [ 16293958583527755209, 15076865731854945472, 176163631405 ], + [ 13511893936143127948, 691187172844604400, 45817318529 ], + [ 18409936402005226436, 13274492813370992341, 129037469331 ], + [ 2189663026458466887, 6364168818499152300, 147719611697 ], + [ 9497725274248154664, 17599380787401914158, 49345002282 ], + [ 14766925481127792125, 3782323149461692814, 42954064344 ], + [ 6982373971809635814, 14470163442442237466, 216205040148 ], + [ 8616702383006884794, 476109872130437939, 20784429132 ], + [ 3059473300040871066, 16330548844673355700, 76025809967 ], + [ 17123843157031495558, 14089158961463739563, 47885280826 ], + [ 11210627174210626524, 13385510793074798805, 58763774837 ], + [ 15868067138625928592, 1549401308746959012, 117725629994 ], + [ 4467869511636937589, 4607384943843027435, 42083993213 ], + [ 10052108125844341766, 5157353797716093483, 125249766838 ], + [ 7470588003218451534, 10846828782671550129, 182279580709 ], + [ 2613527085490786280, 9915857350819131531, 37588007766 ], + [ 3632919450036549616, 1673544973504317923, 86537539704 ], + [ 179367907231218916, 14780986291622785694, 120090723054 ], + [ 13553068184555874624, 8168111319515466401, 238801278872 ], + [ 8798774862365584481, 16345760387859734482, 152442794201 ], + [ 910911255817064881, 3177475373321281805, 217886105446 ], + [ 2304331144765093813, 2558676822419554038, 102172251285 ], + [ 12248937023083640360, 8813474062662382873, 149138706148 ], + [ 10206039550662130685, 5426294560236228430, 228477779386 ], + [ 12267881323837852537, 9919177474128333040, 186294160017 ], + [ 2858642007937891971, 6197383943089627371, 145537719688 ], + [ 14171330289750320841, 13673239314867423997, 136335960856 ], + [ 6601103619749017720, 9309584098968723946, 24741227788 ], + [ 4919573414486739494, 4647101757759615504, 12504673565 ], + [ 3401998285294974486, 1405809295505096753, 29251919891 ], + [ 10799436256515532233, 11332704079573859112, 19076209074 ], + [ 10083786644665753398, 2960072434514044308, 178614347119 ], + [ 6481194517685688896, 3887266602785432801, 111160465848 ], + [ 15104161756860547072, 14545546084687849554, 184210729144 ], + [ 9556039274244079616, 4617763804182385321, 184788515633 ], + [ 1376343134954323968, 7857823815580249095, 49250329477 ], + [ 15682488278596976640, 10939326736548364798, 133425973482 ], + [ 1506454075355430912, 12262012446566951953, 234593022090 ], + [ 1152921504606846976, 12555024338687723023, 138664725026 ], + [ 0, 3332969632922829472, 34680609233 ], + [ 0, 15535060143360327680, 209180680645 ], + [ 0, 15794322927987458048, 197842157297 ], + [ 0, 10571474314433921024, 241856211961 ], + [ 0, 16679514427547975680, 249573080770 ], + [ 0, 16925653299565166592, 194904198288 ], + [ 0, 16717361816799281152, 144917541503 ], + [ 0, 0, 127906250000 ], + [ 0, 0, 16000000000 ], + [ 6172559441576707976, 56110319, 0 ], + [ 15083329738554729992, 56110319334615117, 0 ], + [ 10013126833549229036, 9335385384027907407, 3041746 ], + [ 5817156823499936061, 13237828406194798613, 210506072255 ], + [ 5282692560913632718, 15667486867836528863, 191717624115 ], + [ 10252307034225766362, 17982325043592934313, 51849336164 ], + [ 17981881283247669689, 17159117626917379189, 100974823793 ], + [ 11689290159733383293, 8336208968408929657, 113930197630 ], + [ 5530668968487988249, 12767090573379150201, 126451906793 ], + [ 10083765740821947024, 14736070002412246709, 233692105366 ], + [ 2798423656816843533, 9697296975344560756, 150798843955 ], + [ 7614494481582904797, 7291706381199103298, 51525691522 ], + [ 17811318500083423695, 18098546597780825068, 130395284194 ], + [ 11641467412200329033, 132913902678533478, 226981124177 ], + [ 17733593025296340645, 1879347741692007580, 81007205277 ], + [ 3689424000190644835, 4056624629214083684, 157101879645 ], + [ 14966634145516728506, 14713227692042795499, 93219910061 ], + [ 14171681941562070109, 7366415124022528526, 173797605671 ], + [ 8130575762882608170, 825770353378039393, 39399334164 ], + [ 5234550794400656856, 10244023944395357795, 20044765100 ], + [ 3020576149360486378, 14302658294713551167, 172555329650 ], + [ 3038675756589057221, 14246653166206862817, 114775348659 ], + [ 15470260187120878369, 12404486258134291102, 179772312615 ], + [ 3497929414841828746, 8887442218637942533, 39672448547 ], + [ 9935840636861015305, 1186724038081863005, 35481789208 ], + [ 3647355485153741471, 211331772484951576, 24064332439 ], + [ 766100215038272793, 6311919513247413649, 151011456318 ], + [ 16128087474216800751, 8131780018703965703, 62342169842 ], + [ 16216631732633731297, 2262544347226725725, 242440824678 ], + [ 13760220872779997335, 15318188749880522583, 102122652774 ], + [ 3826276262374222087, 1073117094162650652, 102830400676 ], + [ 14938032745839181005, 4447950380665871747, 164058173794 ], + [ 14479259995009508865, 5373227185066463609, 98241123873 ], + [ 2372033248156102437, 6739731406934274193, 33291283229 ], + [ 792005346826701645, 12328812617001239444, 29365361571 ], + [ 16278924527931792559, 3246111484407310759, 163668346271 ], + [ 17442516423538940144, 3250825415176839770, 159175972056 ], + [ 13844184233048446, 16146270540000862342, 216176227598 ], + [ 13486193870480782357, 15686773375425916830, 14875291079 ], + [ 11931315179184648737, 11920791905793880226, 199850381688 ], + [ 16492562205587485405, 1853290561644080707, 120646227424 ], + [ 12128987217680380854, 12157689141506159076, 224100467082 ], + [ 10568123814189138176, 18100318838862562546, 138659069648 ], + [ 17007583519117541376, 7171257882533475139, 208981220250 ], + [ 143791533903052800, 14477550873015039462, 154388754668 ], + [ 12398714235792654336, 8109481182495403274, 236784829605 ], + [ 9659957317919047680, 14565395719337663965, 165439615855 ], + [ 9412523221204336640, 1860318978161305991, 111789591684 ], + [ 4611686018427387904, 16268646275151585618, 132100848093 ], + [ 0, 13759019338835519104, 221881925081 ], + [ 0, 17003783176010661888, 217745877932 ], + [ 0, 18357489540307877888, 172921776932 ], + [ 0, 905481790074912768, 36995161502 ], + [ 0, 3638882110636294144, 158049086266 ], + [ 0, 9011702854368362496, 58197264194 ], + [ 0, 11529215046068469760, 66488525390 ], + [ 0, 0, 78625000000 ], + [ 0, 0, 64000000000 ], + [ 3237900842885170729, 856, 0 ], + [ 7515893506498066595, 856175526956, 0 ], + [ 7300206309181072546, 7625299565768063067, 46 ], + [ 5999737279837044, 13889021769065194705, 46413368317 ], + [ 7556839307242450651, 14498170692313014398, 253752925378 ], + [ 12946035041643640643, 1541631360972245751, 194785947408 ], + [ 15885877642352740665, 9903958882920799117, 16083572003 ], + [ 10770818348246089568, 15744148547788062576, 35536894686 ], + [ 11635415503599551744, 17936061801321712000, 222853492002 ], + [ 6248053924100826098, 9986394078324430610, 34972315858 ], + [ 16894170802729859998, 13849561248103430369, 210541363507 ], + [ 6143589029651889899, 12142378807953854930, 51750786219 ], + [ 11812087701837886160, 2513847703931031444, 171658239674 ], + [ 7306705080150829180, 1752183758129038045, 186136275957 ], + [ 1485332570280714274, 15824833342220556540, 245094986071 ], + [ 18042602303295630634, 8168747198299470695, 87857865934 ], + [ 13397029889257074369, 17414799840149357478, 206442828672 ], + [ 9948104869613411488, 83147520704167789, 128944058191 ], + [ 10836066241170646532, 2383542703041471269, 79004507436 ], + [ 18330574781234459389, 15540952725549257799, 44129212108 ], + [ 666297360208433062, 6949835416232048690, 204842476735 ], + [ 5035352224889324309, 15398868937585367540, 191376751332 ], + [ 1341745796439923765, 14710915985268256079, 228834774357 ], + [ 6846932182653803785, 9665704836873335737, 85797480353 ], + [ 6727685027257825533, 2528789298740305993, 161523978909 ], + [ 2168538874806877737, 10562914675687726264, 157137085942 ], + [ 17694936100676971444, 17671658300096837111, 246572616751 ], + [ 2163944241059563294, 356471401631698552, 47957982516 ], + [ 6727780864524301558, 7450677157218003204, 52019324353 ], + [ 8599551977795002615, 317174560787152643, 193403902018 ], + [ 15428264807806859091, 7251937674440720374, 66017194067 ], + [ 2126771385339683557, 1252631516699038247, 83393128329 ], + [ 15094316562082972944, 10818009768860843867, 137067905290 ], + [ 8111300598225956802, 12330114194950162396, 10586445484 ], + [ 9481215200564260304, 15826681638261168822, 172668416829 ], + [ 16836674128623424708, 14240150078499211625, 61857966130 ], + [ 7087243115299722740, 10725372116242125421, 50771960082 ], + [ 2343560867338408810, 8434925524647833627, 18581423587 ], + [ 3431385749090422286, 17133902668520348241, 227457258228 ], + [ 3504545517469224582, 15093996047981365810, 244928830724 ], + [ 3333759805712094227, 6187974166976813153, 4818247165 ], + [ 3595183476205994775, 13946144707720259865, 253335450751 ], + [ 14191566632569921303, 9138079832881862582, 127756022019 ], + [ 12917427671358095562, 6600697628576225568, 3495376300 ], + [ 3883793922738316288, 8137099536646556597, 172357824535 ], + [ 7857281689266421760, 14169855543453903706, 23441113049 ], + [ 15987081651486195712, 3706403268650100765, 217768149408 ], + [ 16827562156399525888, 14736932266877982264, 160200924523 ], + [ 7012737938513461248, 18004795125138956004, 107798890698 ], + [ 7385903388887613440, 9068489270661002501, 202976041899 ], + [ 0, 7758835715193269217, 171491603788 ], + [ 0, 16943947811135261184, 76420607326 ], + [ 0, 6745843108403216384, 94918533251 ], + [ 0, 12338229654069444608, 131365692887 ], + [ 0, 14358176069683511296, 215668856769 ], + [ 0, 7083775185760813056, 193778358284 ], + [ 0, 5350276357316149248, 12384012222 ], + [ 0, 9223372036854775808, 190290039062 ], + [ 0, 0, 22500000000 ], + [ 14135788013842776187, 13064201, 0 ], + [ 13284322918167594445, 13064201766302603, 0 ], + [ 7264587765474046287, 14699116688460625612, 708211 ], + [ 16176482219778368741, 6684126021499623499, 115796840712 ], + [ 5401983818872095469, 12614606079692508506, 8362347197 ], + [ 11208857446851049921, 15358270276683001489, 189683839165 ], + [ 13794690008281035639, 18077126190953408995, 189832573499 ], + [ 14519782740993303071, 7864121581925945659, 59979962974 ], + [ 10885858587044789123, 3518026639210514839, 94426314885 ], + [ 8710500938899914621, 4698310163811252280, 133190712606 ], + [ 1284182587483102819, 6101155398200416338, 30254695904 ], + [ 10346074482131502030, 16049178580360033341, 224330744296 ], + [ 9429804686255246574, 3167464649127375997, 232870027714 ], + [ 6412022633845121254, 12778923935480989904, 194171708602 ], + [ 8892351297529018260, 11875553912612980379, 186692746854 ], + [ 14098160105983060597, 10628760849351697057, 102643775067 ], + [ 13793833029739474340, 3408944711673234310, 91576186280 ], + [ 16367653765996977044, 2102091496050506178, 168184799263 ], + [ 10684788343333772342, 6254611118630245760, 31113954608 ], + [ 13272681218705145345, 2647941151989776368, 48339063148 ], + [ 11093568615497829248, 8855437735410157458, 108143545177 ], + [ 12488220765137758124, 10184270603132180103, 89480054241 ], + [ 3727114642519696453, 12079083162535627164, 225552090415 ], + [ 11549865375695057514, 5952952868716156729, 47654808410 ], + [ 11292809154908783229, 11958907037815852320, 90322710221 ], + [ 17723904861837310998, 10101562137321697626, 205648293649 ], + [ 14877674388187150875, 13633527411279258327, 17547606780 ], + [ 12178961950105734308, 16555627393501768728, 252739075001 ], + [ 4540604068069253114, 6359650463500280706, 185897482359 ], + [ 13832478722153359868, 8093923611102181967, 119344757342 ], + [ 1308046668730371491, 2848827352928635726, 94438772478 ], + [ 18400531023544756800, 4686723431961561511, 254154435240 ], + [ 9789823458621466539, 6245554925867652609, 168254067786 ], + [ 1924870562610267306, 17527406820792516033, 74338572210 ], + [ 5290016144582400923, 12119966834653692210, 178950162627 ], + [ 15162883663174059077, 11606502845877928061, 195657024718 ], + [ 8078086116520046390, 424311496652297090, 206629189780 ], + [ 15731407332173190623, 5977664048034127173, 148023001972 ], + [ 5346389182763011056, 6702712461535947028, 116324049817 ], + [ 6368422217216252401, 11384349854055020018, 153363354770 ], + [ 2961453088119116188, 3782955013294836188, 146617146842 ], + [ 10932141691610170525, 3531805968821207061, 218205074402 ], + [ 11034016191361782553, 3867566898657193228, 226191459585 ], + [ 5455325785621453219, 12688734637425072080, 1209661221 ], + [ 7735615202566149352, 18435982764454619691, 37687857682 ], + [ 7502396497775759360, 4728836163964677692, 18999416628 ], + [ 1601286435751591936, 2120012917348838977, 52256350722 ], + [ 11449383158571597824, 9856965465824679831, 2114926130 ], + [ 13043944595690356736, 11217197671061248816, 50534347168 ], + [ 7773494431818186752, 3840562972677739189, 160608085504 ], + [ 9943947977234055168, 17104366978925258617, 208197335 ], + [ 0, 16177877219841993444, 215927229591 ], + [ 0, 7338522384267208704, 151877004481 ], + [ 0, 10935240458612244480, 193397822095 ], + [ 0, 1732868046462124032, 143592800573 ], + [ 0, 557965042578882560, 61093938965 ], + [ 0, 10454684322475540480, 21030247345 ], + [ 0, 13907115649320091648, 177566749572 ], + [ 0, 0, 132753906250 ], + [ 0, 0, 74000000000 ], + [ 6343817245135589714, 199, 0 ], + [ 17549323075660516085, 199343899021, 0 ], + [ 3948641822109421754, 14876458284855834550, 10 ], + [ 1750739713693534543, 10450704926982265198, 10806454419 ], + [ 962163898128633415, 5385653213018257806, 147566533849 ], + [ 7967320249386531212, 12735569669880147489, 217291956845 ], + [ 3018466665533383224, 3619762560577729456, 109690396615 ], + [ 15076865731854945472, 11123448126624084269, 199196227721 ], + [ 691187172844604400, 4072715118852885633, 137603003331 ], + [ 13274492813370992341, 18239087231420827283, 195220782328 ], + [ 6364168818499152300, 423431461216085297, 248988742900 ], + [ 17599380787401914158, 9360976716520160042, 244022954265 ], + [ 3782323149461692814, 11655927117263208920, 25507459564 ], + [ 14470163442442237466, 2646622721938364948, 236631869075 ], + [ 476109872130437939, 4496462484548171852, 147143473705 ], + [ 16330548844673355700, 13140258519803350063, 41243753719 ], + [ 14089158961463739563, 13089764333320627770, 247712334841 ], + [ 13385510793074798805, 6926286827289840501, 249709597546 ], + [ 1549401308746959012, 4985580225290866218, 106375474761 ], + [ 4607384943843027435, 10478790837359789693, 73270268845 ], + [ 5157353797716093483, 10041191967455692214, 173568056389 ], + [ 10846828782671550129, 5035461258013813797, 69544334107 ], + [ 9915857350819131531, 14208759661559249750, 27272972901 ], + [ 1673544973504317923, 12347272163241758840, 101770258404 ], + [ 14780986291622785694, 3372534174410277614, 228669346965 ], + [ 8168111319515466401, 17226704187274712984, 149182825443 ], + [ 16345760387859734482, 4250480179449852121, 227933861505 ], + [ 3177475373321281805, 4303723537755414374, 129230418992 ], + [ 2558676822419554038, 8680503847344854165, 48233305320 ], + [ 8813474062662382873, 8817608623911079652, 232470571056 ], + [ 5426294560236228430, 5692030448698539450, 48478003521 ], + [ 9919177474128333040, 16908836314686769809, 65308565588 ], + [ 6197383943089627371, 6073762347067727240, 84916629853 ], + [ 13673239314867423997, 10931066692585106200, 93329259316 ], + [ 9309584098968723946, 14466591364061539596, 52592574312 ], + [ 4647101757759615504, 4958077340960173341, 104784235489 ], + [ 1405809295505096753, 4076890037156765715, 225268777911 ], + [ 11332704079573859112, 14083973146609179058, 183221008651 ], + [ 2960072434514044308, 2565183738039805295, 11763493714 ], + [ 3887266602785432801, 1482420938751351224, 82139058889 ], + [ 14545546084687849554, 2151089495335413944, 201080362200 ], + [ 4617763804182385321, 3738604531753220913, 216116610795 ], + [ 7857823815580249095, 14195686514836005765, 235202670157 ], + [ 10939326736548364798, 17808833916231796970, 77769549707 ], + [ 12262012446566951953, 1302384553035657354, 139965418821 ], + [ 12555024338687723023, 1672033517974833698, 69070602408 ], + [ 3332969632922829472, 11673925532927662545, 168090641118 ], + [ 15535060143360327680, 3905334232240480709, 222632844771 ], + [ 15794322927987458048, 17411087320267472625, 227211708592 ], + [ 10571474314433921024, 16573305231063706617, 176943856934 ], + [ 16679514427547975680, 15481103236037148354, 38898440676 ], + [ 16925653299565166592, 907440704754420880, 228839232288 ], + [ 16717361816799281152, 3224970785139077759, 32049192459 ], + [ 0, 10560826509734608144, 11174826016 ], + [ 0, 4700940027512659968, 32572503552 ], + [ 0, 9733694683502084096, 254838469 ], + [ 0, 1995535635724632064, 197527664646 ], + [ 0, 10629833226245373952, 6108178203 ], + [ 0, 15729384648544878592, 27576244413 ], + [ 0, 7205759403792793600, 189852691650 ], + [ 0, 0, 194390625000 ], + [ 0, 0, 232000000000 ], + [ 9335385384027907407, 3041746, 0 ], + [ 13237828406194798613, 3041746506072255, 0 ], + [ 15667486867836528863, 7535526066623007027, 164893 ], + [ 17982325043592934313, 11302146918409311588, 29408501686 ], + [ 17159117626917379189, 2480833299122194801, 182612690612 ], + [ 8336208968408929657, 11513226205589330558, 180134486242 ], + [ 12767090573379150201, 4073957068281936105, 226624133243 ], + [ 14736070002412246709, 3729887061093812886, 123220849655 ], + [ 9697296975344560756, 13616911779739451443, 247202197582 ], + [ 7291706381199103298, 13039053282195777666, 78738174266 ], + [ 18098546597780825068, 14490756113210417890, 58706848494 ], + [ 132913902678533478, 17432486112977557585, 238785545462 ], + [ 1879347741692007580, 14308820825344039837, 246945016965 ], + [ 4056624629214083684, 4190949538817536349, 133775682731 ], + [ 14713227692042795499, 13616552502810964397, 171227191829 ], + [ 7366415124022528526, 4898145803694965031, 21738154790 ], + [ 825770353378039393, 1399036321001644308, 38265529016 ], + [ 10244023944395357795, 17170331128243738540, 184075841910 ], + [ 14302658294713551167, 10641321388205367410, 118930805515 ], + [ 14246653166206862817, 6648873641312572851, 11576867188 ], + [ 12404486258134291102, 5988456964560374823, 116360436162 ], + [ 8887442218637942533, 9972593758348346915, 194324634902 ], + [ 1186724038081863005, 16709668921872818968, 22540615390 ], + [ 211331772484951576, 6094829131503407767, 222905832967 ], + [ 6311919513247413649, 4892016478899926334, 7330401349 ], + [ 8131780018703965703, 13150857244079031538, 69265196744 ], + [ 2262544347226725725, 12983943395318785894, 200712909399 ], + [ 15318188749880522583, 15341644584614757478, 87703860981 ], + [ 1073117094162650652, 7507635124856644772, 245831672219 ], + [ 4447950380665871747, 11619655367084544354, 155406989715 ], + [ 5373227185066463609, 11553116952478783009, 147629902779 ], + [ 6739731406934274193, 17392150014233193245, 187626295724 ], + [ 12328812617001239444, 8877887560294980515, 172942830341 ], + [ 3246111484407310759, 18404180619915609503, 5481271248 ], + [ 3250825415176839770, 10079413095288181976, 208997692630 ], + [ 16146270540000862342, 14102802966539105550, 214546406078 ], + [ 15686773375425916830, 13333966026135891399, 190764514480 ], + [ 11920791905793880226, 12344968670173516152, 176722835746 ], + [ 1853290561644080707, 10577007819804726752, 34669222092 ], + [ 12157689141506159076, 15337041354031088010, 204573380742 ], + [ 18100318838862562546, 14333607285614673616, 134831422677 ], + [ 7171257882533475139, 17171597563219696538, 213777026407 ], + [ 14477550873015039462, 2849642930482147564, 103930874169 ], + [ 8109481182495403274, 14791248423979435173, 57154479452 ], + [ 14565395719337663965, 13882371364576310127, 92801835183 ], + [ 1860318978161305991, 11735995808941329540, 175752564859 ], + [ 16268646275151585618, 11376996674339273181, 123636209607 ], + [ 13759019338835519104, 9849638057168043481, 199616748225 ], + [ 17003783176010661888, 18241520229279361964, 193533949948 ], + [ 18357489540307877888, 1865852368526961444, 252988874793 ], + [ 905481790074912768, 10601487369276448158, 41101148059 ], + [ 3638882110636294144, 15999931310312762170, 155574707781 ], + [ 9011702854368362496, 5773775867713013570, 69867358014 ], + [ 11529215046068469760, 17726239863982547534, 62312997016 ], + [ 0, 9711316695888316992, 152960941388 ], + [ 0, 17872002620723724288, 76526451532 ], + [ 0, 7429694208660733952, 76968843203 ], + [ 0, 1782821038871019520, 195402764530 ], + [ 0, 3225250234313474048, 242096646922 ], + [ 0, 10009250171830927360, 10174841165 ], + [ 0, 1152921504606846976, 77542602539 ], + [ 0, 0, 43062500000 ], + [ 0, 0, 160000000000 ], + [ 7625299565768063067, 46, 0 ], + [ 13889021769065194705, 46413368317, 0 ], + [ 14498170692313014398, 9519880170333822146, 2 ], + [ 1541631360972245751, 2285186318012886800, 2516073738 ], + [ 9903958882920799117, 9706420951402272035, 10123880198 ], + [ 15744148547788062576, 2369632031840402142, 6526186134 ], + [ 17936061801321712000, 15599123897979399458, 150128458009 ], + [ 9986394078324430610, 17579576584023912658, 25845630200 ], + [ 13849561248103430369, 3480927339588501811, 248952990756 ], + [ 12142378807953854930, 3547346616671294635, 36188701449 ], + [ 2513847703931031444, 7705317123868384954, 9192302045 ], + [ 1752183758129038045, 4969425237478353909, 221417706078 ], + [ 15824833342220556540, 17043246700132217175, 94269393081 ], + [ 8168747198299470695, 17053788362783499470, 185923916254 ], + [ 17414799840149357478, 11102988228454224768, 222924487719 ], + [ 83147520704167789, 16944305387801685839, 39601894197 ], + [ 2383542703041471269, 11725142977459199276, 53918552635 ], + [ 15540952725549257799, 8175984171998533324, 59635621274 ], + [ 6949835416232048690, 1372352885142856895, 154443220990 ], + [ 15398868937585367540, 17975093466502888164, 254074395398 ], + [ 14710915985268256079, 6467823391459085653, 6974431769 ], + [ 9665704836873335737, 11319386883146885025, 25350621408 ], + [ 2528789298740305993, 9141999262922068637, 224613625192 ], + [ 10562914675687726264, 1587330393383478774, 104495588773 ], + [ 17671658300096837111, 884187548095712303, 165086049353 ], + [ 356471401631698552, 488841225726377268, 73047931903 ], + [ 7450677157218003204, 17462624199405856193, 255026500135 ], + [ 317174560787152643, 13183677579115583554, 39946650754 ], + [ 7251937674440720374, 11645015818917277779, 130714688593 ], + [ 1252631516699038247, 8760523002035971977, 81631277572 ], + [ 10818009768860843867, 10068817678491468042, 4474908903 ], + [ 12330114194950162396, 1273658177787418284, 231545831700 ], + [ 15826681638261168822, 3100019384328057661, 20069045148 ], + [ 14240150078499211625, 10363063568089458738, 156168052387 ], + [ 10725372116242125421, 13030756371481403666, 163561782801 ], + [ 8434925524647833627, 6538878900684195299, 17706398718 ], + [ 17133902668520348241, 8984884716779098868, 254354473335 ], + [ 15093996047981365810, 8728727397070363908, 119487071576 ], + [ 6187974166976813153, 6398650562917867005, 88473185260 ], + [ 13946144707720259865, 1190873176164938879, 236346871542 ], + [ 9138079832881862582, 4383628525805121795, 246064557364 ], + [ 6600697628576225568, 10189374699734119852, 52237636978 ], + [ 8137099536646556597, 5276291920541626391, 114552367109 ], + [ 14169855543453903706, 2692252373800386521, 5286028358 ], + [ 3706403268650100765, 11578684995169173920, 70145947293 ], + [ 14736932266877982264, 5799408022254132587, 157627681771 ], + [ 18004795125138956004, 15548569837712345290, 235314386538 ], + [ 9068489270661002501, 15763030464322902955, 106842889659 ], + [ 7758835715193269217, 13257749746581255500, 187854515593 ], + [ 16943947811135261184, 16152470009188707678, 137718704053 ], + [ 6745843108403216384, 13806790848493904003, 181875627153 ], + [ 12338229654069444608, 11981226523265951191, 145748467631 ], + [ 14358176069683511296, 5133628726077003713, 175649503591 ], + [ 7083775185760813056, 16183955741910833164, 103278294570 ], + [ 5350276357316149248, 13640425554331371454, 42877333998 ], + [ 9223372036854775808, 18108120906868035862, 238739448950 ], + [ 0, 6324011669895037184, 118981643201 ], + [ 0, 10444437689515769856, 193342825359 ], + [ 0, 12324712543665782784, 143566194101 ], + [ 0, 13928941951563857920, 181668124005 ], + [ 0, 3975288688270639104, 101755089456 ], + [ 0, 11141905478114607104, 48215500831 ], + [ 0, 4611686018427387904, 31604003906 ], + [ 0, 0, 66250000000 ], + [ 0, 0, 128000000000 ], + [ 14699116688460625612, 708211, 0 ], + [ 6684126021499623499, 708211796840712, 0 ], + [ 12614606079692508506, 4398362855256705725, 38392 ], + [ 15358270276683001489, 2812083125569302717, 248238435728 ], + [ 18077126190953408995, 12868509142973100603, 144152443331 ], + [ 7864121581925945659, 8726243776748165726, 195697603278 ], + [ 3518026639210514839, 358304413426858117, 206473050623 ], + [ 4698310163811252280, 3180720351566429470, 255019423721 ], + [ 6101155398200416338, 14053818240400098784, 233172427195 ], + [ 16049178580360033341, 7340140541492429288, 187761859013 ], + [ 3167464649127375997, 1323571167904965058, 197397909816 ], + [ 12778923935480989904, 14463851737583396026, 56071750936 ], + [ 11875553912612980379, 15122784818916048486, 24784086973 ], + [ 10628760849351697057, 13557974621377508955, 189819807807 ], + [ 3408944711673234310, 17525172074563876264, 63734979276 ], + [ 2102091496050506178, 15148880683074215967, 204950041481 ], + [ 6254611118630245760, 6744828147558597936, 137821222467 ], + [ 2647941151989776368, 9799290779647971692, 67365637866 ], + [ 8855437735410157458, 11170890203898678105, 234531220617 ], + [ 10184270603132180103, 7068779781287527905, 137605575171 ], + [ 12079083162535627164, 14474741922505540911, 3383199319 ], + [ 5952952868716156729, 17107062680405191514, 87784677331 ], + [ 11958907037815852320, 2712598571300237005, 211927375726 ], + [ 10101562137321697626, 3767556054903418641, 110147050263 ], + [ 13633527411279258327, 18158239681706277628, 23204239622 ], + [ 16555627393501768728, 10531652712128330681, 6984360145 ], + [ 6359650463500280706, 9548395326934120567, 209570922037 ], + [ 8093923611102181967, 15875647850297719390, 53517619547 ], + [ 2848827352928635726, 8215825295203192574, 91860620594 ], + [ 4686723431961561511, 12747310908260543144, 50445380781 ], + [ 6245554925867652609, 77706528053613642, 173691033109 ], + [ 17527406820792516033, 6024737704056756146, 21004212479 ], + [ 12119966834653692210, 6819452388570089667, 255326601685 ], + [ 11606502845877928061, 13695926775373186254, 213369683254 ], + [ 424311496652297090, 3746531715392682132, 54742457678 ], + [ 5977664048034127173, 4717376233154528116, 78203099891 ], + [ 6702712461535947028, 385190957950313369, 243255729478 ], + [ 11384349854055020018, 12388374310648616082, 70020881243 ], + [ 3782955013294836188, 1078067332084407770, 91671575117 ], + [ 3531805968821207061, 3257295319358714850, 77058442147 ], + [ 3867566898657193228, 1545453099660723457, 163176578333 ], + [ 12688734637425072080, 7495477664653506341, 29083779180 ], + [ 18435982764454619691, 7225503732673614354, 108406330658 ], + [ 4728836163964677692, 3935478326103643956, 34391695342 ], + [ 2120012917348838977, 10082240682742686210, 238213342707 ], + [ 9856965465824679831, 10838712705567897138, 243546559362 ], + [ 11217197671061248816, 2142546572501643680, 130587567793 ], + [ 3840562972677739189, 7893042119150331392, 177116147682 ], + [ 17104366978925258617, 12084811642251302615, 226427882670 ], + [ 16177877219841993444, 15317234482572954775, 174655118951 ], + [ 7338522384267208704, 2283226355108359361, 103830348945 ], + [ 10935240458612244480, 13359725152575722127, 145123773948 ], + [ 1732868046462124032, 13126551011491594557, 252724232151 ], + [ 557965042578882560, 3598021288691861269, 215711591756 ], + [ 10454684322475540480, 16462621795896662961, 76195049124 ], + [ 13907115649320091648, 14682112756964627332, 164892440515 ], + [ 0, 7174112100896070218, 195795918927 ], + [ 0, 5023109019590616064, 79388909396 ], + [ 0, 10765223023086141440, 84272303285 ], + [ 0, 8228137177297453056, 181583583909 ], + [ 0, 2891199497780592640, 165446048210 ], + [ 0, 15294857653247803392, 210156732238 ], + [ 0, 14303432416528695296, 78829135894 ], + [ 0, 0, 22775390625 ], + [ 0, 0, 161000000000 ], + [ 14876458284855834550, 10, 0 ], + [ 10450704926982265198, 10806454419, 0 ], + [ 5385653213018257806, 10806454419566533849, 0 ], + [ 12735569669880147489, 17118225092618494573, 585819067 ], + [ 3619762560577729456, 13385738875341807559, 187927980841 ], + [ 11123448126624084269, 8272682717439277193, 41725642358 ], + [ 4072715118852885633, 13402436483369350083, 118448463028 ], + [ 18239087231420827283, 10946328903241612536, 180726547537 ], + [ 423431461216085297, 16265808923426731252, 81593401678 ], + [ 9360976716520160042, 11080374459871185177, 78881771268 ], + [ 11655927117263208920, 1240761893433831916, 4600668303 ], + [ 2646622721938364948, 367264070493390483, 143067261837 ], + [ 4496462484548171852, 2863675693461092905, 141019909425 ], + [ 13140258519803350063, 7511929581752138999, 49155240170 ], + [ 13089764333320627770, 11154557789993845753, 234407222518 ], + [ 6926286827289840501, 8325416539745948522, 246604689789 ], + [ 4985580225290866218, 17745129874679852617, 125451321734 ], + [ 10478790837359789693, 1074820986392253357, 134961965418 ], + [ 10041191967455692214, 7820952682162838597, 106058266162 ], + [ 5035461258013813797, 8215518006273528603, 50423974694 ], + [ 14208759661559249750, 9680426791089900133, 38445364123 ], + [ 12347272163241758840, 16128495723604797412, 155524776987 ], + [ 3372534174410277614, 2264789053583348885, 27874327505 ], + [ 17226704187274712984, 11175458488686298083, 209122774460 ], + [ 4250480179449852121, 11026777810412287617, 188605822818 ], + [ 4303723537755414374, 16199890034895598640, 98597762822 ], + [ 8680503847344854165, 9094320719494763752, 6878197798 ], + [ 8817608623911079652, 1250835564687222832, 38493004114 ], + [ 5692030448698539450, 15362466642459337025, 82067807931 ], + [ 16908836314686769809, 7831109835595423828, 187832800985 ], + [ 6073762347067727240, 15426237284335022429, 217424525314 ], + [ 10931066692585106200, 15636308361455434548, 2836257998 ], + [ 14466591364061539596, 13967173875944980328, 206847645974 ], + [ 4958077340960173341, 18245979923595824097, 22757162012 ], + [ 4076890037156765715, 11335054479675278263, 28989116553 ], + [ 14083973146609179058, 11165339882630461707, 137614474534 ], + [ 2565183738039805295, 15944437408299395922, 38605274287 ], + [ 1482420938751351224, 15806416348777321161, 175864349683 ], + [ 2151089495335413944, 4201030477408556248, 243856867547 ], + [ 3738604531753220913, 9485474942554588907, 219227738318 ], + [ 14195686514836005765, 18238757647663230541, 206514208626 ], + [ 17808833916231796970, 4642199687824746379, 114988725033 ], + [ 1302384553035657354, 6134575894869364037, 41251654149 ], + [ 1672033517974833698, 11524208547121316008, 5332556025 ], + [ 11673925532927662545, 2734683241527878366, 249624728597 ], + [ 3905334232240480709, 10629223456178675171, 21148247475 ], + [ 17411087320267472625, 2788042336985254064, 179576211358 ], + [ 16573305231063706617, 17285498758066142502, 158151140077 ], + [ 15481103236037148354, 5525538192421886436, 237937048765 ], + [ 907440704754420880, 11414325503043801888, 189299540025 ], + [ 3224970785139077759, 7246608114685173259, 57618771825 ], + [ 10560826509734608144, 1007884269852184608, 113392839413 ], + [ 4700940027512659968, 13823717876510029312, 245054637515 ], + [ 9733694683502084096, 12487410768239429317, 203749385247 ], + [ 1995535635724632064, 3361062421598631942, 31676943894 ], + [ 10629833226245373952, 17853337379088328475, 22182203558 ], + [ 15729384648544878592, 11551561037491869885, 166967831358 ], + [ 7205759403792793600, 11480877996635204802, 62626211378 ], + [ 0, 5527488381934471912, 50622379643 ], + [ 0, 11143438404407726080, 123299645745 ], + [ 0, 6472279730688098304, 49604087006 ], + [ 0, 4561816853579563008, 222350862987 ], + [ 0, 2888714464062865408, 139247296587 ], + [ 0, 16258276129784201216, 75156597524 ], + [ 0, 720575940379279360, 20881362915 ], + [ 0, 0, 227039062500 ], + [ 0, 0, 228000000000 ], + [ 7535526066623007027, 164893, 0 ], + [ 11302146918409311588, 164893408501686, 0 ], + [ 2480833299122194801, 16409970870640346804, 8938 ], + [ 11513226205589330558, 7721907286269370594, 234889586303 ], + [ 4073957068281936105, 14300743897882155131, 127418605432 ], + [ 3729887061093812886, 2068482633821123575, 120775244880 ], + [ 13616911779739451443, 4922882895416406094, 80112132668 ], + [ 13039053282195777666, 9317632875623428410, 60266870016 ], + [ 14490756113210417890, 5693844901999766254, 505109890 ], + [ 17432486112977557585, 11569484900262102262, 130308663950 ], + [ 14308820825344039837, 3138170119352085637, 142627183033 ], + [ 4190949538817536349, 950584692575235243, 185170120543 ], + [ 13616552502810964397, 8136430299747162645, 95051531299 ], + [ 4898145803694965031, 6698711700804594470, 35441076770 ], + [ 1399036321001644308, 17401191571004302008, 34363137888 ], + [ 17170331128243738540, 4721732028538188150, 96943320485 ], + [ 10641321388205367410, 2984214103553086219, 165255965606 ], + [ 6648873641312572851, 13128675202005662068, 166161774570 ], + [ 5988456964560374823, 14638512997670672834, 234711706908 ], + [ 9972593758348346915, 12942085665769692438, 28793555379 ], + [ 16709668921872818968, 14131134357119205086, 179701591869 ], + [ 6094829131503407767, 8921946894736102919, 61766050328 ], + [ 4892016478899926334, 5601522560505809989, 24483659710 ], + [ 13150857244079031538, 8602606493507716808, 190303659146 ], + [ 12983943395318785894, 8576789731078566487, 138466348232 ], + [ 15341644584614757478, 17881118138842658549, 200464948702 ], + [ 7507635124856644772, 11624372674432704923, 222969337356 ], + [ 11619655367084544354, 6826284072848095635, 12630158505 ], + [ 11553116952478783009, 1646466632033733563, 169370053601 ], + [ 17392150014233193245, 17871081657060299180, 225089255134 ], + [ 8877887560294980515, 15910893124677544709, 222968793277 ], + [ 18404180619915609503, 11031217459450580944, 189862531244 ], + [ 10079413095288181976, 13554987390037243094, 172598003496 ], + [ 14102802966539105550, 15026714590903687870, 40734817338 ], + [ 13333966026135891399, 4406379654994689200, 58814599830 ], + [ 12344968670173516152, 13596329092861950242, 150238870319 ], + [ 10577007819804726752, 284812388227373260, 47737058477 ], + [ 15337041354031088010, 9285079159392309382, 173015439710 ], + [ 14333607285614673616, 15046108141952711893, 94503345149 ], + [ 17171597563219696538, 13795366909944958311, 253815651156 ], + [ 2849642930482147564, 12909920641180059961, 84747848338 ], + [ 14791248423979435173, 5333762939889788252, 146699848200 ], + [ 13882371364576310127, 6411331390005944495, 8289143868 ], + [ 11735995808941329540, 1447104583224217723, 60347558971 ], + [ 11376996674339273181, 11940049226167932871, 59078447696 ], + [ 9849638057168043481, 9772290783590472385, 80647271365 ], + [ 18241520229279361964, 16351989577831528444, 197529756944 ], + [ 1865852368526961444, 4376738725895725097, 16886443131 ], + [ 10601487369276448158, 13851276297739812763, 123237263481 ], + [ 15999931310312762170, 12641996203470333509, 121750879192 ], + [ 5773775867713013570, 7707081716407945022, 216685323987 ], + [ 17726239863982547534, 417638323657040024, 211417801737 ], + [ 9711316695888316992, 16438047707692449100, 9022640218 ], + [ 17872002620723724288, 14850108107043306316, 90891108351 ], + [ 7429694208660733952, 10423290807904720835, 255805025973 ], + [ 1782821038871019520, 16951162310302339314, 181565047726 ], + [ 3225250234313474048, 2752437506572397322, 174918924350 ], + [ 10009250171830927360, 3925815842962784589, 62149209936 ], + [ 1152921504606846976, 5274166674003605291, 80212818903 ], + [ 0, 5538963350863452832, 215285913148 ], + [ 0, 16900671634439028736, 60300267804 ], + [ 0, 2326997710751662080, 28916187245 ], + [ 0, 12327726161625874432, 109126146798 ], + [ 0, 5756455743825903616, 238668287374 ], + [ 0, 3018537650245074944, 142312058091 ], + [ 0, 16717361816799281152, 235163635253 ], + [ 0, 0, 53906250000 ], + [ 0, 0, 16000000000 ], + [ 2285186318012886800, 2516073738, 0 ], + [ 9706420951402272035, 2516073738123880198, 0 ], + [ 2369632031840402142, 11997425759292732054, 136396630 ], + [ 15599123897979399458, 11491152661270395161, 86650381753 ], + [ 17579576584023912658, 18181063258234881272, 185622936633 ], + [ 3480927339588501811, 2466921813123869732, 57985597414 ], + [ 3547346616671294635, 8430880678232179465, 230133732099 ], + [ 7705317123868384954, 6738034873677997533, 3457038957 ], + [ 4969425237478353909, 7678250951042929246, 109365269602 ], + [ 17043246700132217175, 1853560606315563193, 98416238818 ], + [ 17053788362783499470, 14942676593409905118, 226100481721 ], + [ 11102988228454224768, 4909892170837638183, 185810044121 ], + [ 16944305387801685839, 16871149368312132405, 217266165787 ], + [ 11725142977459199276, 16096130589333770811, 27914586839 ], + [ 8175984171998533324, 12512479187631824282, 215872572987 ], + [ 1372352885142856895, 16980304980540557310, 59678302855 ], + [ 17975093466502888164, 8640919162749295366, 135920504177 ], + [ 6467823391459085653, 7862382415464063513, 113468425166 ], + [ 11319386883146885025, 14534157903009925344, 206426220604 ], + [ 9141999262922068637, 12627464554215107944, 60787898278 ], + [ 1587330393383478774, 2456849734836299173, 166684536225 ], + [ 884187548095712303, 18428252197697827913, 161133186090 ], + [ 488841225726377268, 7244734215936736255, 42998997553 ], + [ 17462624199405856193, 14756175050504770087, 49392737828 ], + [ 13183677579115583554, 6764116534566945922, 36799933852 ], + [ 11645015818917277779, 1588822142405565521, 156366683492 ], + [ 8760523002035971977, 17053265624843842052, 100086130220 ], + [ 10068817678491468042, 16996891591759999207, 44924459381 ], + [ 1273658177787418284, 8565556232370585876, 117921403339 ], + [ 3100019384328057661, 14464960359145886620, 203464339733 ], + [ 10363063568089458738, 5813189542048784035, 21784147072 ], + [ 13030756371481403666, 9739241026882027025, 128315133636 ], + [ 6538878900684195299, 18175068535675302910, 196527965313 ], + [ 8984884716779098868, 10562697212061761911, 129985272439 ], + [ 8728727397070363908, 4264834835660801368, 119572604963 ], + [ 6398650562917867005, 13019066443690126316, 35231197159 ], + [ 1190873176164938879, 1828040177823321846, 231705765006 ], + [ 4383628525805121795, 11240369830376975668, 142099098256 ], + [ 10189374699734119852, 8886938465302549874, 144609341669 ], + [ 5276291920541626391, 9985240313589688325, 229481761899 ], + [ 2692252373800386521, 722909126956573766, 107541300962 ], + [ 11578684995169173920, 5493363474638452381, 226039188982 ], + [ 5799408022254132587, 12410535279213120491, 246297795830 ], + [ 15548569837712345290, 10543108918366869098, 246672776465 ], + [ 15763030464322902955, 12953909016524823995, 17571543079 ], + [ 13257749746581255500, 16505942145872588169, 39702232814 ], + [ 16152470009188707678, 12428594380392015797, 238894788916 ], + [ 13806790848493904003, 7528259605829768337, 52673755451 ], + [ 11981226523265951191, 18147447600042811311, 59408107770 ], + [ 5133628726077003713, 12021069431116183911, 250983775105 ], + [ 16183955741910833164, 11819985069665662506, 129651663479 ], + [ 13640425554331371454, 10401877114068152814, 119640762674 ], + [ 18108120906868035862, 4611631138117837942, 50563886888 ], + [ 6324011669895037184, 17200813398607252417, 40249997024 ], + [ 10444437689515769856, 14100466137553658767, 224932457962 ], + [ 12324712543665782784, 17887776768825509301, 234764387800 ], + [ 13928941951563857920, 12632656857970087269, 216969698321 ], + [ 3975288688270639104, 8923681664054686256, 17684817700 ], + [ 11141905478114607104, 6213926103737837599, 36483753752 ], + [ 4611686018427387904, 1233118281776157762, 24336857609 ], + [ 0, 30716279628678784, 9066847476 ], + [ 0, 15775734650898546688, 244001665132 ], + [ 0, 976806005729918976, 108855204289 ], + [ 0, 12460098853279891456, 193052952759 ], + [ 0, 5635665595421687808, 183675463312 ], + [ 0, 1805943450575568896, 144305510044 ], + [ 0, 11529215046068469760, 156097900390 ], + [ 0, 0, 102625000000 ], + [ 0, 0, 64000000000 ], + [ 4398362855256705725, 38392, 0 ], + [ 2812083125569302717, 38392238435728, 0 ], + [ 12868509142973100603, 4564018338575530435, 2081 ], + [ 8726243776748165726, 16553437246451512014, 33247415929 ], + [ 358304413426858117, 4339777136957372927, 121897363631 ], + [ 3180720351566429470, 18439463366554654697, 175235259789 ], + [ 14053818240400098784, 1370067356680643003, 141999605312 ], + [ 7340140541492429288, 4210124040914115013, 64074271500 ], + [ 1323571167904965058, 10692225626142609720, 12228231281 ], + [ 14463851737583396026, 11592856673895384344, 113579626712 ], + [ 15122784818916048486, 10284479231227406269, 216628450019 ], + [ 13557974621377508955, 4961071383534266431, 227557522736 ], + [ 17525172074563876264, 10960611551445686988, 48268940218 ], + [ 15148880683074215967, 14616396723115619209, 186594175942 ], + [ 6744828147558597936, 1025604265437492803, 198792356454 ], + [ 9799290779647971692, 11711588454892179178, 102055598118 ], + [ 11170890203898678105, 5580373263251565705, 38634886482 ], + [ 7068779781287527905, 14109334653033148931, 82302512640 ], + [ 14474741922505540911, 2899414033769399895, 764868564 ], + [ 17107062680405191514, 13233457234892808147, 212157177549 ], + [ 2712598571300237005, 3287946691509034862, 205717387154 ], + [ 3767556054903418641, 5488480288717445911, 146178239947 ], + [ 18158239681706277628, 11687233053874362630, 203297531112 ], + [ 10531652712128330681, 6783772100089274577, 232633566173 ], + [ 9548395326934120567, 7898291058728402485, 221367749022 ], + [ 15875647850297719390, 4423684977486598491, 158428167216 ], + [ 8215825295203192574, 2750833684599526706, 48239808443 ], + [ 12747310908260543144, 15669689830489025709, 187149122992 ], + [ 77706528053613642, 15117307274214954517, 176849455587 ], + [ 6024737704056756146, 8148639818575698175, 227819510869 ], + [ 6819452388570089667, 13006484426078994901, 85441738649 ], + [ 13695926775373186254, 10287496057845513526, 153705082933 ], + [ 3746531715392682132, 14159876032966532430, 53557686278 ], + [ 4717376233154528116, 15742212196465548019, 6767608417 ], + [ 385190957950313369, 2892220461917134150, 97853387033 ], + [ 12388374310648616082, 7487151560715393883, 25156787585 ], + [ 1078067332084407770, 7245756744165177933, 129405879299 ], + [ 3257295319358714850, 3067122860671533987, 3392793260 ], + [ 1545453099660723457, 8135043905834122525, 172166269063 ], + [ 7495477664653506341, 14730019368921022572, 135441001613 ], + [ 7225503732673614354, 495969939682055458, 141798515950 ], + [ 3935478326103643956, 5617761407265775598, 238026886584 ], + [ 10082240682742686210, 2087044847072781811, 184304539456 ], + [ 10838712705567897138, 15929674232061203330, 64113138927 ], + [ 2142546572501643680, 8658086469608285873, 239863549370 ], + [ 7893042119150331392, 18369871790780313570, 186469355807 ], + [ 12084811642251302615, 3545648451947416750, 31995832745 ], + [ 15317234482572954775, 13347376792767929959, 169192209987 ], + [ 2283226355108359361, 14482164459838203025, 67723562745 ], + [ 13359725152575722127, 8899577765623565820, 249785079708 ], + [ 13126551011491594557, 7095320096604405719, 156482447077 ], + [ 3598021288691861269, 2968593824439315788, 229384638073 ], + [ 16462621795896662961, 12621408323612585636, 121160927793 ], + [ 14682112756964627332, 3954422936414648259, 49684207916 ], + [ 7174112100896070218, 17143730087577690191, 44214369696 ], + [ 5023109019590616064, 5033045529399041876, 160929363470 ], + [ 10765223023086141440, 15857648521994521781, 14272841944 ], + [ 8228137177297453056, 16655573486499109541, 216859644848 ], + [ 2891199497780592640, 16652154439190075858, 176902900447 ], + [ 15294857653247803392, 18016950600164130638, 223902715100 ], + [ 14303432416528695296, 2086292996072613910, 220976700849 ], + [ 0, 17324462585194799521, 177113098169 ], + [ 0, 11079151463184927232, 185939160998 ], + [ 0, 5239846817488961536, 166600602004 ], + [ 0, 2778806963520143360, 148284052665 ], + [ 0, 6240890740138835968, 185150639427 ], + [ 0, 17250651344549707776, 67338319364 ], + [ 0, 4197354852709302272, 4935159683 ], + [ 0, 9223372036854775808, 131227539062 ], + [ 0, 0, 118500000000 ], + [ 17118225092618494573, 585819067, 0 ], + [ 13385738875341807559, 585819067927980841, 0 ], + [ 8272682717439277193, 5654803392547571318, 31757315 ], + [ 13402436483369350083, 2931628102185393332, 3306547506 ], + [ 10946328903241612536, 15964697617980212305, 50158923877 ], + [ 16265808923426731252, 450380868305846606, 101865447992 ], + [ 11080374459871185177, 14631133530814566148, 56024415195 ], + [ 1240761893433831916, 31969822783742095, 219793155338 ], + [ 367264070493390483, 10437269029385743245, 10001733087 ], + [ 2863675693461092905, 15196146496377392433, 223565805487 ], + [ 7511929581752138999, 4409099735137480938, 175823784752 ], + [ 11154557789993845753, 10644987914903248118, 48239017775 ], + [ 8325416539745948522, 3154431617534062973, 47577065951 ], + [ 17745129874679852617, 11702056331247960454, 223171002080 ], + [ 1074820986392253357, 15575315065965259114, 224634369744 ], + [ 7820952682162838597, 10759747609480050226, 208844339521 ], + [ 8215518006273528603, 12538236653960743718, 65583287086 ], + [ 9680426791089900133, 17857942663978005403, 46679699170 ], + [ 16128495723604797412, 11443004154750813211, 226968081011 ], + [ 2264789053583348885, 4004313188770806737, 115620326498 ], + [ 11175458488686298083, 17134872954824183228, 98217074252 ], + [ 11026777810412287617, 2659553912986171234, 76928883324 ], + [ 16199890034895598640, 9501854300969137926, 124144174706 ], + [ 9094320719494763752, 14528169966301018150, 114515096553 ], + [ 1250835564687222832, 18172091996515901778, 233787573671 ], + [ 15362466642459337025, 1133541705604751035, 167985111081 ], + [ 7831109835595423828, 18280349987988641497, 41061449418 ], + [ 15426237284335022429, 9936015874712336386, 202990979758 ], + [ 15636308361455434548, 15876720399740689614, 174538632499 ], + [ 13967173875944980328, 8618117825152456982, 51860678737 ], + [ 18245979923595824097, 8085525680745921564, 81467189103 ], + [ 11335054479675278263, 8072355444669730953, 111438317225 ], + [ 11165339882630461707, 9395030504766848294, 169437603265 ], + [ 15944437408299395922, 3537903114058185903, 193509305624 ], + [ 15806416348777321161, 2126094743961928691, 24191790112 ], + [ 4201030477408556248, 289185362555601115, 32115255827 ], + [ 9485474942554588907, 16909937501450129614, 19015676769 ], + [ 18238757647663230541, 14449642060360499058, 97916689548 ], + [ 4642199687824746379, 12433818908498244393, 140783316665 ], + [ 6134575894869364037, 11884444034578008581, 185674038673 ], + [ 11524208547121316008, 988625838444140793, 145644257002 ], + [ 2734683241527878366, 1675370907158909973, 234053593514 ], + [ 10629223456178675171, 15920186275316934067, 170090822038 ], + [ 2788042336985254064, 5600921198503757726, 150863035027 ], + [ 17285498758066142502, 10457357161776341741, 147303626546 ], + [ 5525538192421886436, 12225356765775740093, 50566894467 ], + [ 11414325503043801888, 4486633318598164537, 131662737918 ], + [ 7246608114685173259, 10302486602879381361, 254243220879 ], + [ 1007884269852184608, 15536428611301239541, 143558498917 ], + [ 13823717876510029312, 12026126645955462603, 101842231482 ], + [ 12487410768239429317, 14877968141142123551, 186651937631 ], + [ 3361062421598631942, 734560801645383190, 95806536269 ], + [ 17853337379088328475, 15648943144911081638, 77039820620 ], + [ 11551561037491869885, 13664182862003235646, 76848330907 ], + [ 11480877996635204802, 3895127525902132786, 155740736837 ], + [ 5527488381934471912, 5249187334214137467, 69211155286 ], + [ 11143438404407726080, 10642260063359027505, 86284559015 ], + [ 6472279730688098304, 783598951897779422, 167576918074 ], + [ 4561816853579563008, 5538576558607624843, 58042478984 ], + [ 2888714464062865408, 15974581187564609611, 136300246836 ], + [ 16258276129784201216, 7474269406918257428, 52865983781 ], + [ 720575940379279360, 8045286838779138019, 37405180956 ], + [ 0, 8184246376556341732, 28436135873 ], + [ 0, 1493267152679331840, 193443668885 ], + [ 0, 10179074811222818816, 149080950174 ], + [ 0, 3892499202005008384, 158551808751 ], + [ 0, 10341173215925108736, 239211012804 ], + [ 0, 6230307872002015232, 196560596123 ], + [ 0, 9295429630892703744, 155337745666 ], + [ 0, 0, 2503906250 ], + [ 0, 0, 202000000000 ], + [ 16409970870640346804, 8938, 0 ], + [ 7721907286269370594, 8938889586303, 0 ], + [ 14300743897882155131, 10665454627995623288, 484 ], + [ 2068482633821123575, 16803537892767562832, 228578175453 ], + [ 4922882895416406094, 8099123106849104444, 221910921614 ], + [ 9317632875623428410, 7077413686679401728, 142439054343 ], + [ 5693844901999766254, 13536636358372449666, 7383667364 ], + [ 11569484900262102262, 7280632235418610318, 164733822527 ], + [ 3138170119352085637, 6187823673116858809, 63394683864 ], + [ 950584692575235243, 8624343686231740255, 216335442593 ], + [ 8136430299747162645, 806211610822132771, 161467526608 ], + [ 6698711700804594470, 18388078233202190882, 208043704818 ], + [ 17401191571004302008, 7628864426595573600, 242996819718 ], + [ 4721732028538188150, 4530799784343874981, 6413561569 ], + [ 2984214103553086219, 8561580552078486438, 225245615148 ], + [ 13128675202005662068, 13349114951221999594, 44464124211 ], + [ 14638512997670672834, 10029144738508991772, 51723656971 ], + [ 12942085665769692438, 12601907197916268979, 11543681025 ], + [ 14131134357119205086, 1329580921391066941, 1683150758 ], + [ 8921946894736102919, 3198179786356761112, 166072076726 ], + [ 5601522560505809989, 11406753413634654142, 182173373673 ], + [ 8602606493507716808, 11131812960525182090, 233618361341 ], + [ 8576789731078566487, 14299636753645227208, 253603456789 ], + [ 17881118138842658549, 12964114684643663326, 21775184861 ], + [ 11624372674432704923, 5019257593846306316, 221702786065 ], + [ 6826284072848095635, 6929086798159998121, 17272094499 ], + [ 1646466632033733563, 18359765766933703649, 35375626547 ], + [ 17871081657060299180, 9993076234752063198, 51995284896 ], + [ 15910893124677544709, 3257189215046584509, 160541725748 ], + [ 11031217459450580944, 2905234736672690348, 52176572581 ], + [ 13554987390037243094, 12064985302079670056, 165157493090 ], + [ 15026714590903687870, 14315096064942799930, 98654044163 ], + [ 4406379654994689200, 11943971043551974038, 3776022912 ], + [ 13596329092861950242, 12472773152119929647, 128647483967 ], + [ 284812388227373260, 7791259796982183085, 63676150387 ], + [ 9285079159392309382, 16866829442051086686, 115422365039 ], + [ 15046108141952711893, 3702498393844653053, 111914352656 ], + [ 13795366909944958311, 2057239613841701716, 16200712840 ], + [ 12909920641180059961, 17201969976738286226, 136111523182 ], + [ 5333762939889788252, 18271566505443461640, 110932520660 ], + [ 6411331390005944495, 18368509115417119804, 212990503604 ], + [ 1447104583224217723, 7613923684154518587, 180995758874 ], + [ 11940049226167932871, 17984805084714865232, 26412751629 ], + [ 9772290783590472385, 4220802739051410373, 13974958237 ], + [ 16351989577831528444, 17812459042810815760, 157228810174 ], + [ 4376738725895725097, 10629526089664605307, 190965615339 ], + [ 13851276297739812763, 17437443267816548473, 235576227763 ], + [ 12641996203470333509, 12506371893701049304, 179945285693 ], + [ 7707081716407945022, 15737221540003030739, 61677971778 ], + [ 417638323657040024, 2358380859011605513, 66853116489 ], + [ 16438047707692449100, 10042972713837039706, 73127848082 ], + [ 14850108107043306316, 13424397272769642495, 146544430641 ], + [ 10423290807904720835, 6867102315755663029, 49727738034 ], + [ 16951162310302339314, 8690748404825506734, 178372266362 ], + [ 2752437506572397322, 956229930815387710, 122471126415 ], + [ 3925815842962784589, 7734449506297687888, 143051837328 ], + [ 5274166674003605291, 16332184961683848151, 144419285347 ], + [ 5538963350863452832, 15580777817612768828, 99885369520 ], + [ 16900671634439028736, 17404245271944696092, 176844635657 ], + [ 2326997710751662080, 13201420160494469229, 9943486026 ], + [ 12327726161625874432, 16511717657124068078, 74715650420 ], + [ 5756455743825903616, 14131292492116594062, 116895102007 ], + [ 3018537650245074944, 18429136031865875691, 55766058900 ], + [ 16717361816799281152, 2563978348305862197, 148999045466 ], + [ 0, 14239974392147482896, 90138993544 ], + [ 0, 11164201396098998272, 136771950558 ], + [ 0, 7116971104932986880, 222605212570 ], + [ 0, 12437629862867369984, 154385811776 ], + [ 0, 16501893821638901760, 64674245265 ], + [ 0, 10649324268870959104, 145894569456 ], + [ 0, 7205759403792793600, 240577301025 ], + [ 0, 0, 33390625000 ], + [ 0, 0, 232000000000 ], + [ 11997425759292732054, 136396630, 0 ], + [ 11491152661270395161, 136396630650381753, 0 ], + [ 18181063258234881272, 3016823727048309817, 7394076 ], + [ 2466921813123869732, 17405973192644624358, 28163542341 ], + [ 8430880678232179465, 8937219978302591747, 69943579697 ], + [ 6738034873677997533, 15178463196824222317, 49484487665 ], + [ 7678250951042929246, 11979404627460330594, 241822826138 ], + [ 1853560606315563193, 2006448052689740002, 154649404826 ], + [ 14942676593409905118, 16330465320863239865, 154108769766 ], + [ 4909892170837638183, 17136208883957646553, 230885276298 ], + [ 16871149368312132405, 140455118208931867, 138928955745 ], + [ 16096130589333770811, 3964972929179372247, 97007614087 ], + [ 12512479187631824282, 3378050330022776379, 135214941613 ], + [ 16980304980540557310, 6065353437512901255, 173183124475 ], + [ 8640919162749295366, 12768753059854699889, 251328803468 ], + [ 7862382415464063513, 6848720690951013326, 140692195490 ], + [ 14534157903009925344, 10953228058585475132, 162371269892 ], + [ 12627464554215107944, 15539127852083296166, 4593775682 ], + [ 2456849734836299173, 14534853647735598497, 66842377808 ], + [ 18428252197697827913, 1506909603576368170, 80787935995 ], + [ 7244734215936736255, 5475702579938239025, 251081689733 ], + [ 14756175050504770087, 12039747373985783332, 133296838431 ], + [ 6764116534566945922, 17572399137760898460, 31652676012 ], + [ 1588822142405565521, 869552790852091236, 172952601666 ], + [ 17053265624843842052, 4549585778048181804, 66047138551 ], + [ 16996891591759999207, 4121918231767210357, 247246633539 ], + [ 8565556232370585876, 1558397953312543179, 67223449635 ], + [ 14464960359145886620, 6067524298738069781, 35084480922 ], + [ 5813189542048784035, 5811095224555517056, 154328921151 ], + [ 9739241026882027025, 6440894514158997188, 63315020103 ], + [ 18175068535675302910, 4612748874388784257, 71349161591 ], + [ 10562697212061761911, 9908101430749813367, 119250057617 ], + [ 4264834835660801368, 15150017990912190499, 145537119254 ], + [ 13019066443690126316, 17470426264690059239, 22821284120 ], + [ 1828040177823321846, 9615161096851907726, 24947073705 ], + [ 11240369830376975668, 9227932132124142224, 169521238927 ], + [ 8886938465302549874, 4794113194321211621, 143500247203 ], + [ 9985240313589688325, 391512698859146347, 163259889397 ], + [ 722909126956573766, 17209658878068655842, 245021223945 ], + [ 5493363474638452381, 3077364726606876150, 9932937477 ], + [ 12410535279213120491, 1952989567673965814, 5166824276 ], + [ 10543108918366869098, 11172860676923186449, 84105871776 ], + [ 12953909016524823995, 17338078544784947239, 160605681990 ], + [ 16505942145872588169, 4593380466519703278, 70939899121 ], + [ 12428594380392015797, 786884753602720052, 241249007654 ], + [ 7528259605829768337, 17848875822468020539, 38042657107 ], + [ 18147447600042811311, 2899664567187130618, 83967589497 ], + [ 12021069431116183911, 2973178834961857409, 121157191131 ], + [ 11819985069665662506, 11117453141176836727, 219161176347 ], + [ 10401877114068152814, 7535238370146462002, 27602678342 ], + [ 4611631138117837942, 10246175467290865448, 70408486090 ], + [ 17200813398607252417, 1203128834127050464, 202555446285 ], + [ 14100466137553658767, 14518048959078919658, 13065221744 ], + [ 17887776768825509301, 1553474987376920024, 112787025011 ], + [ 12632656857970087269, 14956572380830948369, 115084214047 ], + [ 8923681664054686256, 7594162606042048292, 31810797413 ], + [ 6213926103737837599, 14461296147288811288, 101411680379 ], + [ 1233118281776157762, 18305427728131488265, 123783948434 ], + [ 30716279628678784, 10253208939347909876, 146992339225 ], + [ 15775734650898546688, 6446028915490812012, 25555827570 ], + [ 976806005729918976, 12986063676957432257, 114349439927 ], + [ 12460098853279891456, 9769714697972762807, 183703975922 ], + [ 5635665595421687808, 97429465146664592, 242529617295 ], + [ 1805943450575568896, 16395571728207795868, 143005281661 ], + [ 11529215046068469760, 6331668478323650406, 125888805724 ], + [ 0, 18129911846294207040, 92343240435 ], + [ 0, 9890094564876124160, 243982824490 ], + [ 0, 12290856656987750400, 42536143100 ], + [ 0, 8498454992640802816, 252666288674 ], + [ 0, 5341660584200896512, 34460702168 ], + [ 0, 9288674231451648000, 216289572000 ], + [ 0, 1152921504606846976, 160503540039 ], + [ 0, 0, 71062500000 ], + [ 0, 0, 160000000000 ], + [ 4564018338575530435, 2081, 0 ], + [ 16553437246451512014, 2081247415929, 0 ], + [ 4339777136957372927, 15212079674427582639, 112 ], + [ 18439463366554654697, 10179808126814248333, 112824648491 ], + [ 1370067356680643003, 6066766544199222848, 43551848504 ], + [ 4210124040914115013, 6625308131806923532, 56328880073 ], + [ 10692225626142609720, 9122786786400665713, 201359158673 ], + [ 11592856673895384344, 11932880778639151320, 145494547262 ], + [ 10284479231227406269, 3884040911779255011, 62646882763 ], + [ 4961071383534266431, 13441817515637357872, 203210554279 ], + [ 10960611551445686988, 11628577856022352826, 167728682387 ], + [ 14616396723115619209, 13296656925520243654, 147630386468 ], + [ 1025604265437492803, 5020720704545399398, 36720813216 ], + [ 11711588454892179178, 14121973606499014694, 160272173814 ], + [ 5580373263251565705, 3642481034345420114, 246765553723 ], + [ 14109334653033148931, 9845536238569696768, 59197459292 ], + [ 2899414033769399895, 17655403572195686356, 92533727588 ], + [ 13233457234892808147, 8377495365136654029, 100957101345 ], + [ 3287946691509034862, 13713682649609025426, 33454144933 ], + [ 5488480288717445911, 1367709905452854731, 165743420226 ], + [ 11687233053874362630, 9981467701727208680, 66074143702 ], + [ 6783772100089274577, 6277920117543306205, 214541096448 ], + [ 7898291058728402485, 9344111460418701726, 340326731 ], + [ 4423684977486598491, 4918507011364617264, 75506545297 ], + [ 2750833684599526706, 6554777203830755259, 145266632799 ], + [ 15669689830489025709, 4198262173120265648, 95355335184 ], + [ 15117307274214954517, 8080325935698446819, 16227588248 ], + [ 8148639818575698175, 12797633874200091733, 152438035346 ], + [ 13006484426078994901, 8376502502208665497, 146693761122 ], + [ 10287496057845513526, 9891973386793349173, 98454091110 ], + [ 14159876032966532430, 14877430279003795462, 102536244951 ], + [ 15742212196465548019, 8759933935842067041, 215806507111 ], + [ 2892220461917134150, 3753418510388703513, 103474876970 ], + [ 7487151560715393883, 2961383332545305985, 42203473225 ], + [ 7245756744165177933, 2497674184068629507, 73160536912 ], + [ 3067122860671533987, 15244544070742305452, 80135399188 ], + [ 8135043905834122525, 45953573565810823, 20826408390 ], + [ 14730019368921022572, 3960077421351906445, 198002491148 ], + [ 495969939682055458, 3173330011013883118, 12214676227 ], + [ 5617761407265775598, 11026266219545759160, 3172026564 ], + [ 2087044847072781811, 8886757764964685632, 196597735089 ], + [ 15929674232061203330, 13952322129918090479, 177481752103 ], + [ 8658086469608285873, 4127250666614902202, 39756356898 ], + [ 18369871790780313570, 17649958504065306911, 34223738706 ], + [ 3545648451947416750, 13269305359002216873, 82956806167 ], + [ 13347376792767929959, 16236593433831947843, 23719330484 ], + [ 14482164459838203025, 13580930396682424057, 180880187493 ], + [ 8899577765623565820, 421976357197961116, 101736223712 ], + [ 7095320096604405719, 2962130818798626533, 224022875384 ], + [ 2968593824439315788, 8234383947306356345, 248160577433 ], + [ 12621408323612585636, 4380469931801381425, 153446386848 ], + [ 3954422936414648259, 15279887469027055916, 160237465750 ], + [ 17143730087577690191, 8534542821713755552, 150828324359 ], + [ 5033045529399041876, 7814613482565088782, 7462658493 ], + [ 15857648521994521781, 13771954404705323224, 189423631045 ], + [ 16655573486499109541, 4568173274762548144, 197746579144 ], + [ 16652154439190075858, 8105292616250821343, 200247641169 ], + [ 18016950600164130638, 2923678426777275612, 81439388793 ], + [ 2086292996072613910, 1808633176918384049, 121158492925 ], + [ 17324462585194799521, 18118642609460438969, 253098046200 ], + [ 11079151463184927232, 18138164175864360870, 248982213583 ], + [ 5239846817488961536, 4031433690465792404, 207983271850 ], + [ 2778806963520143360, 5012226396942308537, 170218544458 ], + [ 6240890740138835968, 7889712298793536835, 74271713337 ], + [ 17250651344549707776, 13500762396543628804, 57427702160 ], + [ 4197354852709302272, 501020624068841347, 144731877796 ], + [ 9223372036854775808, 8370653768288261750, 164027160382 ], + [ 0, 647579990023635200, 62453774050 ], + [ 0, 11106569307181154304, 226035105381 ], + [ 0, 10797461613892861952, 101602088328 ], + [ 0, 17627230675448889344, 136585331566 ], + [ 0, 12197735707942322176, 110955574089 ], + [ 0, 12871287735024877568, 73661240577 ], + [ 0, 4611686018427387904, 1697753906 ], + [ 0, 0, 50250000000 ], + [ 0, 0, 128000000000 ], + [ 5654803392547571318, 31757315, 0 ], + [ 2931628102185393332, 31757315306547506, 0 ], + [ 15964697617980212305, 9451803574512021605, 1721567 ], + [ 450380868305846606, 8662766454758138424, 223512383298 ], + [ 14631133530814566148, 9207992007314947035, 66469609510 ], + [ 31969822783742095, 17118602861291201802, 38499166246 ], + [ 10437269029385743245, 11186560605745599967, 38928001320 ], + [ 15196146496377392433, 10505549821532796847, 40606424665 ], + [ 4409099735137480938, 18133667530488679216, 89569506996 ], + [ 10644987914903248118, 10778135771244330799, 180983028086 ], + [ 3154431617534062973, 17087985777033767391, 118584283910 ], + [ 11702056331247960454, 2639185991757283040, 6926341565 ], + [ 15575315065965259114, 5401720287293896400, 189143070559 ], + [ 10759747609480050226, 9816495392633895233, 95292827843 ], + [ 12538236653960743718, 10042051500090034990, 195532153281 ], + [ 17857942663978005403, 11629689537856384738, 193544380702 ], + [ 11443004154750813211, 2099086731766010483, 30630446733 ], + [ 4004313188770806737, 13665537898516458594, 141113791719 ], + [ 17134872954824183228, 16375672064669490764, 231740810293 ], + [ 2659553912986171234, 7770550512184564348, 53887726961 ], + [ 9501854300969137926, 6197048880720627314, 113421242387 ], + [ 14528169966301018150, 17963594118523106281, 19335942692 ], + [ 18172091996515901778, 8255454642407818663, 36973808388 ], + [ 1133541705604751035, 16744201957549498409, 4447529092 ], + [ 18280349987988641497, 17442505417202859722, 132907705006 ], + [ 9936015874712336386, 6383975767786687150, 174945560113 ], + [ 15876720399740689614, 15245442964998335795, 49346076019 ], + [ 8618117825152456982, 2910016124519524433, 115826457119 ], + [ 8085525680745921564, 3847913871169988463, 31157752290 ], + [ 8072355444669730953, 17210451512590059177, 226208595828 ], + [ 9395030504766848294, 17899408909991454145, 116932980445 ], + [ 3537903114058185903, 5920601932753251608, 221970328901 ], + [ 2126094743961928691, 16521781895108979744, 69320956473 ], + [ 289185362555601115, 3697493405554698771, 57895647591 ], + [ 16909937501450129614, 2816108280295732065, 103200441519 ], + [ 14449642060360499058, 14251078772056398988, 175152661535 ], + [ 12433818908498244393, 4543066550096031417, 31772552528 ], + [ 11884444034578008581, 3099369389734296977, 80246280131 ], + [ 988625838444140793, 5243484113636490986, 195168017151 ], + [ 1675370907158909973, 6823370511605197226, 255284249843 ], + [ 15920186275316934067, 11396290277624641942, 243369895656 ], + [ 5600921198503757726, 15934361408437566099, 232617794133 ], + [ 10457357161776341741, 14939272230935131954, 85863803462 ], + [ 12225356765775740093, 7500666177940329347, 70809859570 ], + [ 4486633318598164537, 4806714453065462270, 242406611928 ], + [ 10302486602879381361, 11557851247268441487, 216260572512 ], + [ 15536428611301239541, 10655523157206817381, 96626552371 ], + [ 12026126645955462603, 14769600176490881210, 51577637067 ], + [ 14877968141142123551, 16688495540925795167, 203800661629 ], + [ 734560801645383190, 909793965395524173, 125904685156 ], + [ 15648943144911081638, 12724590949761703756, 100049320029 ], + [ 13664182862003235646, 10810739657314826395, 93689801457 ], + [ 3895127525902132786, 2431218615388671301, 241586051371 ], + [ 5249187334214137467, 4235001167959059286, 43131796625 ], + [ 10642260063359027505, 6253317787396334247, 145229579873 ], + [ 783598951897779422, 9534525563070371898, 97338993036 ], + [ 5538576558607624843, 8392783992374030728, 140516867666 ], + [ 15974581187564609611, 16356257019231647540, 82454973731 ], + [ 7474269406918257428, 12896334001521091877, 35886674469 ], + [ 8045286838779138019, 1427636373320877084, 37699111667 ], + [ 8184246376556341732, 16116755731295043521, 243077392322 ], + [ 1493267152679331840, 15945633911163986837, 194873691078 ], + [ 10179074811222818816, 7510154241072743838, 198864414546 ], + [ 3892499202005008384, 3571560509790395119, 82407126277 ], + [ 10341173215925108736, 3576991649007035076, 5193614683 ], + [ 6230307872002015232, 15509961892750732443, 91193909105 ], + [ 9295429630892703744, 17789791359353349378, 113840796718 ], + [ 0, 18331227331079738314, 46964386521 ], + [ 0, 15386712883100476416, 217993737824 ], + [ 0, 14082462055028752384, 96834115376 ], + [ 0, 12919043128765186048, 48763411797 ], + [ 0, 6125373368465096704, 85700342731 ], + [ 0, 12335992698065387520, 203332057155 ], + [ 0, 2774217370460225536, 67668735504 ], + [ 0, 0, 16150390625 ], + [ 0, 0, 97000000000 ], + [ 10665454627995623288, 484, 0 ], + [ 16803537892767562832, 484578175453, 0 ], + [ 8099123106849104444, 4962829537462579598, 26 ], + [ 7077413686679401728, 5711259460785241095, 26269035528 ], + [ 13536636358372449666, 13845894607204897444, 8309607995 ], + [ 7280632235418610318, 12116633056637003327, 59750587450 ], + [ 6187823673116858809, 2965791047992089560, 58656843994 ], + [ 8624343686231740255, 16021997451315962529, 218160775854 ], + [ 806211610822132771, 3942052271663803856, 174868554222 ], + [ 18388078233202190882, 15669876414782439922, 238213699081 ], + [ 7628864426595573600, 10594415915406145286, 9849465702 ], + [ 4530799784343874981, 10789820553031921377, 102574324437 ], + [ 8561580552078486438, 3989990218583987244, 213584917344 ], + [ 13349114951221999594, 2937341169808224563, 96216297803 ], + [ 10029144738508991772, 16267436558584536843, 75159233583 ], + [ 12601907197916268979, 16221580362814625793, 47881859502 ], + [ 1329580921391066941, 9695437602320209830, 174879373633 ], + [ 3198179786356761112, 10729753156793715126, 65525590725 ], + [ 11406753413634654142, 2609241432056861929, 197581661084 ], + [ 11131812960525182090, 8462663743997037565, 156141447261 ], + [ 14299636753645227208, 14993422143908194069, 93458761920 ], + [ 12964114684643663326, 1307443894537745373, 192812795043 ], + [ 5019257593846306316, 10017257439419829265, 163070876675 ], + [ 6929086798159998121, 16754772009970777891, 3543036613 ], + [ 18359765766933703649, 11722573031602862387, 197908278010 ], + [ 9993076234752063198, 7363764277467092384, 250635481957 ], + [ 3257189215046584509, 6733958494847390772, 101399190461 ], + [ 2905234736672690348, 8799796600227451045, 189365048621 ], + [ 12064985302079670056, 10512023194742249826, 45477037929 ], + [ 14315096064942799930, 4572542132337197059, 105569857919 ], + [ 11943971043551974038, 12600500455757416832, 127247878005 ], + [ 12472773152119929647, 7873789864743195199, 117683074498 ], + [ 7791259796982183085, 15724851676325671539, 194426839003 ], + [ 16866829442051086686, 8748017220462413167, 219852445917 ], + [ 3702498393844653053, 14172589522760466448, 221474230963 ], + [ 2057239613841701716, 9520545591489413768, 179768297617 ], + [ 17201969976738286226, 12488551088392570222, 145516109810 ], + [ 18271566505443461640, 1135798823651241684, 242677005711 ], + [ 18368509115417119804, 11168725610120161972, 143061571777 ], + [ 7613923684154518587, 9580104948718508826, 193605457828 ], + [ 17984805084714865232, 16638722716909738765, 164519338529 ], + [ 4220802739051410373, 15732724012348272797, 33901986965 ], + [ 17812459042810815760, 12269722190021214142, 149852872677 ], + [ 10629526089664605307, 13110655916311972587, 229665142972 ], + [ 17437443267816548473, 6618112997062866867, 188710730081 ], + [ 12506371893701049304, 8457936459015989309, 97358768624 ], + [ 15737221540003030739, 3329167139937134914, 240458505654 ], + [ 2358380859011605513, 5245511557216705097, 182180474512 ], + [ 10042972713837039706, 5655931353280440466, 144284359751 ], + [ 13424397272769642495, 604622132328697393, 71306608653 ], + [ 6867102315755663029, 8673282619234652338, 13032776631 ], + [ 8690748404825506734, 16929477433058445690, 183470179592 ], + [ 956229930815387710, 11036952409253549455, 8917748810 ], + [ 7734449506297687888, 18199392190170386320, 74598314388 ], + [ 16332184961683848151, 9683116091880335715, 148986591027 ], + [ 15580777817612768828, 2993913337608915120, 51524922775 ], + [ 17404245271944696092, 4490779842162392585, 151162300367 ], + [ 13201420160494469229, 946849923353644618, 207243445663 ], + [ 16511717657124068078, 3613491058474899828, 159051328837 ], + [ 14131292492116594062, 14624054199004410935, 69195887742 ], + [ 18429136031865875691, 12088470271991908244, 126792771566 ], + [ 2563978348305862197, 10071980927725011290, 238655317286 ], + [ 14239974392147482896, 2833441711428854664, 38546003180 ], + [ 11164201396098998272, 17655572411864340446, 236153601182 ], + [ 7116971104932986880, 4997642792058747802, 158957110498 ], + [ 12437629862867369984, 11489200787635734848, 226270922758 ], + [ 16501893821638901760, 12983586226429536913, 6622830822 ], + [ 10649324268870959104, 12311150768725063152, 230703841619 ], + [ 7205759403792793600, 8530052476845967905, 83667388820 ], + [ 0, 6282736361499820264, 148462415071 ], + [ 0, 11337164765929082880, 223340587820 ], + [ 0, 8343856200414134272, 44614588933 ], + [ 0, 17889330377156198400, 5452321350 ], + [ 0, 17730714064155312128, 70969782542 ], + [ 0, 7449235258647511040, 14961183935 ], + [ 0, 9943947977234055168, 191403823852 ], + [ 0, 0, 236539062500 ], + [ 0, 0, 228000000000 ], + [ 3016823727048309817, 7394076, 0 ], + [ 17405973192644624358, 7394076163542341, 0 ], + [ 8937219978302591747, 12396245121240683569, 400833 ], + [ 15178463196824222317, 10248996648596888561, 193672001794 ], + [ 11979404627460330594, 11257495103713935002, 2555599221 ], + [ 2006448052689740002, 7555396579247433114, 117610270032 ], + [ 16330465320863239865, 4805022328730367462, 80409578869 ], + [ 17136208883957646553, 7056637817080232586, 117260480782 ], + [ 140455118208931867, 10811411483818434913, 14382541102 ], + [ 3964972929179372247, 16962406704495245447, 46586087790 ], + [ 3378050330022776379, 18074517319117194669, 110919533909 ], + [ 6065353437512901255, 3702019776117654523, 85979821547 ], + [ 12768753059854699889, 3551977551381082764, 235200686894 ], + [ 6848720690951013326, 16442608985936005282, 46192553088 ], + [ 10953228058585475132, 3580046275479139588, 128891355619 ], + [ 15539127852083296166, 8737412692712715330, 227194074697 ], + [ 14534853647735598497, 3082033243045084752, 73473656091 ], + [ 1506909603576368170, 16401023756841128699, 27167077356 ], + [ 5475702579938239025, 7520296082779572869, 236889101279 ], + [ 12039747373985783332, 9854104766152464159, 223407676067 ], + [ 17572399137760898460, 14169188802648310188, 163534192089 ], + [ 869552790852091236, 2018609909210367042, 217768113264 ], + [ 4549585778048181804, 8270271948267674359, 112109429062 ], + [ 4121918231767210357, 12320338602894572099, 70448332340 ], + [ 1558397953312543179, 17538536685990080547, 52667886893 ], + [ 6067524298738069781, 15833914616956760474, 45950765978 ], + [ 5811095224555517056, 6137696141415969855, 154858358231 ], + [ 6440894514158997188, 9757490468419438919, 215332725174 ], + [ 4612748874388784257, 3566639201356598903, 182528954618 ], + [ 9908101430749813367, 9760900035773954449, 250193347898 ], + [ 15150017990912190499, 3873778773990716438, 58529139451 ], + [ 17470426264690059239, 2295668377270167832, 251209997968 ], + [ 9615161096851907726, 1791721710912807593, 144124448432 ], + [ 9227932132124142224, 10571009006922683279, 176097129428 ], + [ 4794113194321211621, 9840791932778184867, 212573055546 ], + [ 391512698859146347, 11525464956561274613, 58533470399 ], + [ 17209658878068655842, 4435781488897895433, 191624796707 ], + [ 3077364726606876150, 6395563367070996741, 35240464196 ], + [ 1952989567673965814, 15538690795135662932, 68346704184 ], + [ 11172860676923186449, 16294558813563371936, 56842354115 ], + [ 17338078544784947239, 4942096228426070342, 195883329803 ], + [ 4593380466519703278, 6910116424372647153, 11267911573 ], + [ 786884753602720052, 17923400669760829478, 149374598161 ], + [ 17848875822468020539, 4134686917293039955, 17971629497 ], + [ 2899664567187130618, 16857102463116098681, 185224141826 ], + [ 2973178834961857409, 11364321508775167451, 2913825355 ], + [ 11117453141176836727, 7966947780972783899, 75616061103 ], + [ 7535238370146462002, 11261055695926686278, 175431889104 ], + [ 10246175467290865448, 9227040437353594058, 208610463052 ], + [ 1203128834127050464, 7185344074282882061, 76500198864 ], + [ 14518048959078919658, 14197856148610578032, 208389518282 ], + [ 1553474987376920024, 885688687260429427, 202769667324 ], + [ 14956572380830948369, 17407816160380305183, 252048013279 ], + [ 7594162606042048292, 17812728703806357349, 223943679604 ], + [ 14461296147288811288, 17120198191964319867, 116965629957 ], + [ 18305427728131488265, 12091952048375408786, 5928087803 ], + [ 10253208939347909876, 405056939269888281, 251655506034 ], + [ 6446028915490812012, 12485440679452408690, 114021958180 ], + [ 12986063676957432257, 8394369900823444407, 36676837095 ], + [ 9769714697972762807, 2877421667354294258, 231455059704 ], + [ 97429465146664592, 2676980714750756239, 248155985341 ], + [ 16395571728207795868, 6119309228579057021, 189145119415 ], + [ 6331668478323650406, 18203256146533333852, 183331728417 ], + [ 18129911846294207040, 351919978865493747, 33986800493 ], + [ 9890094564876124160, 5190010931882390570, 109019077620 ], + [ 12290856656987750400, 6982466386088036604, 244281351056 ], + [ 8498454992640802816, 4707293888784996898, 144378520261 ], + [ 5341660584200896512, 690306801165964760, 197255182913 ], + [ 9288674231451648000, 12456770961278956704, 65037421606 ], + [ 1152921504606846976, 16946092489294063943, 38675282906 ], + [ 0, 11098404173866185376, 218918649514 ], + [ 0, 15152070965853306880, 170601645695 ], + [ 0, 17370091362040414208, 127821395412 ], + [ 0, 10141938552171134976, 212941634539 ], + [ 0, 10586988556645826560, 235549795590 ], + [ 0, 12169852093061922816, 6573921799 ], + [ 0, 16717361816799281152, 7659729003 ], + [ 0, 0, 107906250000 ], + [ 0, 0, 16000000000 ], + [ 15212079674427582639, 112, 0 ], + [ 10179808126814248333, 112824648491, 0 ], + [ 6066766544199222848, 2144184049294538808, 6 ], + [ 6625308131806923532, 4108002197393276873, 6116236450 ], + [ 9122786786400665713, 6446230217393892753, 162222695245 ], + [ 11932880778639151320, 5571068025259989822, 77349450840 ], + [ 3884040911779255011, 14804812668872528331, 88302008202 ], + [ 13441817515637357872, 17369928488562523047, 138802570502 ], + [ 11628577856022352826, 2967474173531035027, 6941625710 ], + [ 13296656925520243654, 5291425437992807716, 110160867097 ], + [ 5020720704545399398, 14219547193739388064, 25286848747 ], + [ 14121973606499014694, 17720313647158217462, 235770843197 ], + [ 3642481034345420114, 12334850628290578491, 61960620127 ], + [ 9845536238569696768, 7818499847417334620, 95668673592 ], + [ 17655403572195686356, 136007040922198372, 56423841726 ], + [ 8377495365136654029, 8523477092112604449, 190007372956 ], + [ 13713682649609025426, 367934822655966629, 156462058619 ], + [ 1367709905452854731, 12964987687054730050, 123019945786 ], + [ 9981467701727208680, 15267036012420885462, 58702833390 ], + [ 6277920117543306205, 11142900264750765568, 238827627680 ], + [ 9344111460418701726, 13680181547777718603, 160604057833 ], + [ 4918507011364617264, 13001922925761426065, 233741604127 ], + [ 6554777203830755259, 2397730045956515935, 31704835654 ], + [ 4198262173120265648, 4482395522588406288, 70129981206 ], + [ 8080325935698446819, 3255525722490493080, 22242991148 ], + [ 12797633874200091733, 836222287193822098, 44176482403 ], + [ 8376502502208665497, 420898743993182306, 99045331701 ], + [ 9891973386793349173, 11652649973356574054, 245022816966 ], + [ 14877430279003795462, 15058402726661910231, 198631691420 ], + [ 8759933935842067041, 9600134495208339559, 156816317647 ], + [ 3753418510388703513, 14626343323989004842, 207520424333 ], + [ 2961383332545305985, 6813981265331086665, 141792895660 ], + [ 2497674184068629507, 10281745288790487888, 172369386664 ], + [ 15244544070742305452, 17569829347075761940, 168557374528 ], + [ 45953573565810823, 7654580675237889478, 64952462357 ], + [ 3960077421351906445, 16194838649686212364, 21414955649 ], + [ 3173330011013883118, 6495102772252453635, 129877923962 ], + [ 11026266219545759160, 14935159852819761348, 122352100226 ], + [ 8886757764964685632, 17381879863441579697, 130809636637 ], + [ 13952322129918090479, 9062335510435372583, 29942273595 ], + [ 4127250666614902202, 7569219009130126626, 59491270192 ], + [ 17649958504065306911, 12652124168176193362, 48410328184 ], + [ 13269305359002216873, 8940200224697247767, 120685873025 ], + [ 16236593433831947843, 5600570701927432884, 129484649225 ], + [ 13580930396682424057, 2018432801986093157, 9303607546 ], + [ 421976357197961116, 8235849749361824736, 250109419461 ], + [ 2962130818798626533, 9705097287982370040, 197446466309 ], + [ 8234383947306356345, 3517483139049842585, 5526114378 ], + [ 4380469931801381425, 958281614186777760, 74190683143 ], + [ 15279887469027055916, 7336473432636108950, 7051948550 ], + [ 8534542821713755552, 12955383920176764423, 6397711021 ], + [ 7814613482565088782, 10735469126281273789, 173702312769 ], + [ 13771954404705323224, 8637888232514730693, 65581970947 ], + [ 4568173274762548144, 6806336737533581000, 3468260859 ], + [ 8105292616250821343, 16142569672872330321, 251368972253 ], + [ 2923678426777275612, 8141285259947963513, 221875090455 ], + [ 1808633176918384049, 5220241098754220797, 23441339958 ], + [ 18118642609460438969, 154438799943119608, 54282989837 ], + [ 18138164175864360870, 2226876628677628879, 13008372144 ], + [ 4031433690465792404, 17219557081221357482, 176120719223 ], + [ 5012226396942308537, 15401507148161015114, 119933474059 ], + [ 7889712298793536835, 8842629766613985337, 11834917375 ], + [ 13500762396543628804, 3180100571546071440, 255479359920 ], + [ 501020624068841347, 7740848704392475044, 176172393597 ], + [ 8370653768288261750, 2014314126623495998, 125419632249 ], + [ 647579990023635200, 11209566016506885858, 121109196187 ], + [ 11106569307181154304, 7117166613733441125, 155607671791 ], + [ 10797461613892861952, 4197646860931880328, 239385822375 ], + [ 17627230675448889344, 5487263271238026094, 167227554892 ], + [ 12197735707942322176, 18148076225293562697, 76297465137 ], + [ 12871287735024877568, 9127276943027950849, 49983809183 ], + [ 4611686018427387904, 9691696125379324722, 159494790674 ], + [ 0, 13102362262487705216, 18525387899 ], + [ 0, 8929385439893192704, 123710280481 ], + [ 0, 11891353410743566336, 33484062954 ], + [ 0, 1587423090877399040, 234644631560 ], + [ 0, 3489137423026225152, 8086054378 ], + [ 0, 13046928120492326912, 234189146518 ], + [ 0, 11529215046068469760, 150707275390 ], + [ 0, 0, 126625000000 ], + [ 0, 0, 64000000000 ], + [ 9451803574512021605, 1721567, 0 ], + [ 8662766454758138424, 1721567512383298, 0 ], + [ 9207992007314947035, 6674960280855494694, 93326 ], + [ 17118602861291201802, 16378845781483497510, 142361850321 ], + [ 11186560605745599967, 17606907750956804392, 209887899008 ], + [ 10505549821532796847, 13225609159240506969, 128954472381 ], + [ 18133667530488679216, 2668084873338435252, 189716961709 ], + [ 10778135771244330799, 14802814305275861366, 173144637170 ], + [ 17087985777033767391, 8005510553372365574, 242802462171 ], + [ 2639185991757283040, 12748500143273514429, 219433979596 ], + [ 5401720287293896400, 10393733905569036127, 204691097577 ], + [ 9816495392633895233, 603389089974790339, 233563445444 ], + [ 10042051500090034990, 2033494532597735873, 196032709788 ], + [ 11629689537856384738, 9204796763694620958, 156110235959 ], + [ 2099086731766010483, 7826260310402107021, 55498993032 ], + [ 13665537898516458594, 10122690201685169383, 136424262421 ], + [ 16375672064669490764, 7438455564568110133, 21548752135 ], + [ 7770550512184564348, 2805412574380520817, 7403239484 ], + [ 6197048880720627314, 7250965427231182867, 60152081720 ], + [ 17963594118523106281, 8136242944826085924, 56393075623 ], + [ 8255454642407818663, 15357191647956011780, 167441066613 ], + [ 16744201957549498409, 7369614426695395460, 117832515027 ], + [ 17442505417202859722, 10886957545142526638, 211399507598 ], + [ 6383975767786687150, 2030047207417538097, 142590183151 ], + [ 15245442964998335795, 11557093828502314355, 239110049079 ], + [ 2910016124519524433, 15201062539664128543, 55626511311 ], + [ 3847913871169988463, 8846936323343880674, 207824051251 ], + [ 17210451512590059177, 1485291750116245364, 51479593379 ], + [ 17899408909991454145, 2076024439668322013, 163080517827 ], + [ 5920601932753251608, 7029497773682748741, 195112541510 ], + [ 16521781895108979744, 16333533921668749881, 70381069837 ], + [ 3697493405554698771, 2065057316131928423, 13885442648 ], + [ 2816108280295732065, 7800502648925570223, 88111946981 ], + [ 14251078772056398988, 17011619967093802015, 229422866095 ], + [ 4543066550096031417, 5368819344429198672, 175922201766 ], + [ 3099369389734296977, 15598879366754275267, 166291044279 ], + [ 5243484113636490986, 16393893486035835647, 183845616944 ], + [ 6823370511605197226, 12042046205096920307, 48888714746 ], + [ 11396290277624641942, 15437070428008474344, 250652800632 ], + [ 15934361408437566099, 13704569163204647509, 120836845264 ], + [ 14939272230935131954, 18192483750856993350, 208742926182 ], + [ 7500666177940329347, 5152535865317963250, 102986216520 ], + [ 4806714453065462270, 17512614083933854680, 72279319528 ], + [ 11557851247268441487, 14481918350603613536, 232949360711 ], + [ 10655523157206817381, 16124419709964004915, 71785066366 ], + [ 14769600176490881210, 18088011566435813579, 126874106543 ], + [ 16688495540925795167, 15008862380698848893, 175980553071 ], + [ 909793965395524173, 18160498644611827812, 111813632059 ], + [ 12724590949761703756, 3604680497457231965, 59984482604 ], + [ 10810739657314826395, 5957615565551495921, 44195410121 ], + [ 2431218615388671301, 17528455034961565995, 201322962986 ], + [ 4235001167959059286, 8503772325120113809, 42950219451 ], + [ 6253317787396334247, 8501492578048509537, 187460990421 ], + [ 9534525563070371898, 2296237701094386060, 213460866836 ], + [ 8392783992374030728, 3753593040591076946, 20124479295 ], + [ 16356257019231647540, 8518075399775653155, 63203482686 ], + [ 12896334001521091877, 12757855675959554597, 62461765792 ], + [ 1427636373320877084, 121631169379748595, 160691604742 ], + [ 16116755731295043521, 16679062494579173314, 6006593638 ], + [ 15945633911163986837, 10739912744743898054, 102904173789 ], + [ 7510154241072743838, 9367340677776287570, 221582211836 ], + [ 3571560509790395119, 12227321512794715397, 252507804555 ], + [ 3576991649007035076, 7241061891859170651, 139662844427 ], + [ 15509961892750732443, 13148571323079237489, 11392538751 ], + [ 17789791359353349378, 12509763434355012654, 127712785479 ], + [ 18331227331079738314, 11812768946960181977, 71678155634 ], + [ 15386712883100476416, 14170358803552564832, 114640371487 ], + [ 14082462055028752384, 18179989524780635952, 31768176689 ], + [ 12919043128765186048, 17091718978514754901, 49985539206 ], + [ 6125373368465096704, 7394768384359232459, 134926543942 ], + [ 12335992698065387520, 6778628272692852803, 70400871197 ], + [ 2774217370460225536, 18193335045875234320, 29367470174 ], + [ 0, 1378519212560967521, 94986262669 ], + [ 0, 4677732610631043584, 141074729676 ], + [ 0, 17296098591070486528, 204253580392 ], + [ 0, 7343735382392963072, 104937623383 ], + [ 0, 14525996728454217728, 87398104692 ], + [ 0, 9691359370008330240, 116787455860 ], + [ 0, 3044433348102455296, 116525369644 ], + [ 0, 9223372036854775808, 44165039062 ], + [ 0, 0, 214500000000 ], + [ 4962829537462579598, 26, 0 ], + [ 5711259460785241095, 26269035528, 0 ], + [ 13845894607204897444, 7822291454600056379, 1 ], + [ 12116633056637003327, 8201586317771250746, 1424047269 ], + [ 2965791047992089560, 3278889188817135834, 165444608885 ], + [ 16021997451315962529, 1710725240251040430, 117177748939 ], + [ 3942052271663803856, 1850175733663425006, 203092738601 ], + [ 15669876414782439922, 9147599666163914249, 41100298227 ], + [ 10594415915406145286, 10221885933644344166, 243495892371 ], + [ 10789820553031921377, 14901479793736678101, 147554129546 ], + [ 3989990218583987244, 5181831442059703136, 138807810838 ], + [ 2937341169808224563, 6396246577759793483, 22280907645 ], + [ 16267436558584536843, 14167229556464870447, 125346741221 ], + [ 16221580362814625793, 2969982933326311854, 229768007053 ], + [ 9695437602320209830, 7892677766222018881, 141161003097 ], + [ 10729753156793715126, 798698968922663621, 89427862919 ], + [ 2609241432056861929, 15926812109043458972, 135043297557 ], + [ 8462663743997037565, 8663842590352697437, 21863394214 ], + [ 14993422143908194069, 17093523026636671168, 166469667847 ], + [ 1307443894537745373, 839764004742743203, 7926641740 ], + [ 10017257439419829265, 16894643909298232323, 76045523697 ], + [ 16754772009970777891, 9066702926218949317, 241915860481 ], + [ 11722573031602862387, 9119392417260546810, 1491506950 ], + [ 7363764277467092384, 9723021096578315109, 6494363253 ], + [ 6733958494847390772, 14787464248751217597, 117527086029 ], + [ 8799796600227451045, 3733434565920249133, 205801630043 ], + [ 10512023194742249826, 6643788868836820841, 91202389893 ], + [ 4572542132337197059, 4729646697422664063, 133360160516 ], + [ 12600500455757416832, 4090144564201555829, 4256394661 ], + [ 7873789864743195199, 2109480737093400002, 165221727181 ], + [ 15724851676325671539, 16577155033369419739, 205114355179 ], + [ 8748017220462413167, 745377248603805917, 235898649375 ], + [ 14172589522760466448, 11305561465807999667, 31040406981 ], + [ 9520545591489413768, 2211245518782892177, 197612875715 ], + [ 12488551088392570222, 14170095199249735666, 195119871859 ], + [ 1135798823651241684, 17849973668116118927, 115768162399 ], + [ 11168725610120161972, 9020960204585720001, 95967649011 ], + [ 9580104948718508826, 10807134002871850916, 243489027232 ], + [ 16638722716909738765, 3925122626254791201, 160585855908 ], + [ 15732724012348272797, 17208463291312718997, 164212781323 ], + [ 12269722190021214142, 5145077219589447653, 11932872664 ], + [ 13110655916311972587, 17602397765035489468, 216278915194 ], + [ 6618112997062866867, 16422643262490753377, 122954227894 ], + [ 8457936459015989309, 2902509461400906224, 182890273275 ], + [ 3329167139937134914, 3422418805967265206, 251157345353 ], + [ 5245511557216705097, 4228874576277237392, 73185529695 ], + [ 5655931353280440466, 2553488530807495751, 95229247750 ], + [ 604622132328697393, 11546099176912486413, 6138424890 ], + [ 8673282619234652338, 10460791037534167991, 58625915290 ], + [ 16929477433058445690, 8127117908566000904, 154567080618 ], + [ 11036952409253549455, 11541304458088287306, 170440571944 ], + [ 18199392190170386320, 6249718665174839700, 40625655368 ], + [ 9683116091880335715, 13102508413386290995, 72338797927 ], + [ 2993913337608915120, 6274675218640661911, 103710288404 ], + [ 4490779842162392585, 3404497118599817167, 20340150825 ], + [ 946849923353644618, 11258566093988562335, 41184558158 ], + [ 3613491058474899828, 16762592482501635397, 78610328090 ], + [ 14624054199004410935, 5550125446725071998, 26908701959 ], + [ 12088470271991908244, 6370033225258510318, 7300872903 ], + [ 10071980927725011290, 1503521728674735398, 199345320193 ], + [ 2833441711428854664, 4250415082606384364, 1081506076 ], + [ 17655572411864340446, 6020091901030562974, 28230415463 ], + [ 4997642792058747802, 16288222967151527138, 103326349835 ], + [ 11489200787635734848, 6377016228656203782, 11882986336 ], + [ 12983586226429536913, 8378856515587563750, 96345698742 ], + [ 12311150768725063152, 15812881490200838483, 182454218721 ], + [ 8530052476845967905, 4548570371183413652, 225857218023 ], + [ 6282736361499820264, 16731431495283420383, 231246578493 ], + [ 11337164765929082880, 14737727629551135532, 61907012718 ], + [ 8343856200414134272, 12413722258104293893, 110798933815 ], + [ 17889330377156198400, 800899742400762438, 55672949232 ], + [ 17730714064155312128, 603197008376033550, 240043416862 ], + [ 7449235258647511040, 6380777281587743935, 30032699375 ], + [ 9943947977234055168, 10001440249018225388, 239345902629 ], + [ 0, 5505914461980436708, 37542179162 ], + [ 0, 1105464290051876864, 90298476221 ], + [ 0, 4500443576769970176, 189059927339 ], + [ 0, 2843045143185981440, 43243969535 ], + [ 0, 660949699682893824, 255154121786 ], + [ 0, 276549164618219520, 58035830155 ], + [ 0, 4683743612465315840, 139014991760 ], + [ 0, 0, 144253906250 ], + [ 0, 0, 74000000000 ], + [ 12396245121240683569, 400833, 0 ], + [ 10248996648596888561, 400833672001794, 0 ], + [ 11257495103713935002, 4370024159708535157, 21729 ], + [ 7555396579247433114, 7166684413908503888, 225236899484 ], + [ 4805022328730367462, 10217286283215687029, 156388506740 ], + [ 7056637817080232586, 4767369911989629198, 116553880199 ], + [ 10811411483818434913, 14407999214182082862, 135258439640 ], + [ 16962406704495245447, 8472271297615317358, 216781059202 ], + [ 18074517319117194669, 6236024012584764757, 130459282747 ], + [ 3702019776117654523, 1951826556984620523, 59338055539 ], + [ 3551977551381082764, 12357130551551830830, 115105808729 ], + [ 16442608985936005282, 8927758011099278464, 89669881389 ], + [ 3580046275479139588, 10199854049407140323, 45483974731 ], + [ 8737412692712715330, 17895455027038549577, 75552935195 ], + [ 3082033243045084752, 16539200343720527131, 27970114560 ], + [ 16401023756841128699, 3536976106235802604, 896591847 ], + [ 7520296082779572869, 16980391644793590751, 231191739858 ], + [ 9854104766152464159, 10090294316609084067, 210920508875 ], + [ 14169188802648310188, 17603457857266236889, 203546995950 ], + [ 2018609909210367042, 11164962743035868272, 238954285362 ], + [ 8270271948267674359, 1585686890718568774, 50605253843 ], + [ 12320338602894572099, 10882524700472655412, 211085960258 ], + [ 17538536685990080547, 2194808754940947757, 66589942846 ], + [ 15833914616956760474, 274100791137209242, 62118980821 ], + [ 6137696141415969855, 12203404582981010903, 213014859033 ], + [ 9757490468419438919, 541940706340938166, 25661547888 ], + [ 3566639201356598903, 10305434016011833594, 112029378664 ], + [ 9760900035773954449, 7900783531944543546, 104558658697 ], + [ 3873778773990716438, 8920818625012419323, 137428302333 ], + [ 2295668377270167832, 12532363335400447632, 253483598546 ], + [ 1791721710912807593, 13483507182924762800, 210679380777 ], + [ 10571009006922683279, 415911049779278804, 41730942389 ], + [ 9840791932778184867, 3441628281170127418, 181022546583 ], + [ 11525464956561274613, 17830811568183566527, 151186571042 ], + [ 4435781488897895433, 17897295813176613411, 34966610231 ], + [ 6395563367070996741, 2086148701331574596, 55970214350 ], + [ 15538690795135662932, 13015567826878853432, 206113090347 ], + [ 16294558813563371936, 12944531121587846595, 43705575345 ], + [ 4942096228426070342, 3534180912913737995, 177701724438 ], + [ 6910116424372647153, 3447584022400118677, 22191588331 ], + [ 17923400669760829478, 6375676813770849297, 235186893904 ], + [ 4134686917293039955, 11580694081479200185, 80345626132 ], + [ 16857102463116098681, 1872134358882196482, 20627790684 ], + [ 11364321508775167451, 17602652840520938059, 92101488606 ], + [ 7966947780972783899, 10331040597716338351, 222954241722 ], + [ 11261055695926686278, 73785407041056976, 186560046833 ], + [ 9227040437353594058, 17166209109167902028, 241003999914 ], + [ 7185344074282882061, 8762475644006589904, 170930582060 ], + [ 14197856148610578032, 8839001228645872586, 44475014756 ], + [ 885688687260429427, 13558262784529110268, 100479163216 ], + [ 17407816160380305183, 5640853896420358111, 80734994898 ], + [ 17812728703806357349, 8459930353450835572, 210305791302 ], + [ 17120198191964319867, 7643830211500171269, 70458613743 ], + [ 12091952048375408786, 1308629115231236347, 239414372866 ], + [ 405056939269888281, 8957268500971669618, 2070940926 ], + [ 12485440679452408690, 7645679094277669412, 254485574498 ], + [ 8394369900823444407, 3821107497040617191, 98414473094 ], + [ 2877421667354294258, 8847137191985934072, 134207142652 ], + [ 2676980714750756239, 3531126524756088253, 252479604268 ], + [ 6119309228579057021, 8726915034124352183, 44191422752 ], + [ 18203256146533333852, 17611136727168068641, 32473087011 ], + [ 351919978865493747, 18017743272784259949, 35954701634 ], + [ 5190010931882390570, 18113575006829616116, 66976743819 ], + [ 6982466386088036604, 12805550441678740368, 139981938868 ], + [ 4707293888784996898, 8061966093393027781, 180694190280 ], + [ 690306801165964760, 11954593141554100801, 200437040057 ], + [ 12456770961278956704, 14068656112359197734, 185648059792 ], + [ 16946092489294063943, 895878255770467290, 144762663376 ], + [ 11098404173866185376, 10319906489512197802, 208048565657 ], + [ 15152070965853306880, 14551142616794302079, 153559443251 ], + [ 17370091362040414208, 15933181735739307476, 51788819021 ], + [ 10141938552171134976, 11524527334398983147, 77863739512 ], + [ 10586988556645826560, 11828012606225556742, 120624745878 ], + [ 12169852093061922816, 3556238869349799431, 150641197848 ], + [ 16717361816799281152, 7403090230513381483, 24192784095 ], + [ 0, 10172292854665622800, 223401322325 ], + [ 0, 11240746576366182400, 85551441100 ], + [ 0, 17021927826892259328, 204609362092 ], + [ 0, 9046328496309141504, 172922760556 ], + [ 0, 8038996803112140800, 108490402450 ], + [ 0, 17098478935265509376, 146435794889 ], + [ 0, 7205759403792793600, 201926910400 ], + [ 0, 0, 192390625000 ], + [ 0, 0, 232000000000 ], + [ 2144184049294538808, 6, 0 ], + [ 4108002197393276873, 6116236450, 0 ], + [ 6446230217393892753, 6116236450222695245, 0 ], + [ 5571068025259989822, 6240972538554414168, 331561842 ], + [ 14804812668872528331, 4356262642990299018, 114338323799 ], + [ 17369928488562523047, 1335108558830511366, 87236153471 ], + [ 2967474173531035027, 18435704923261947246, 127072376379 ], + [ 5291425437992807716, 8395401931972636441, 59999401566 ], + [ 14219547193739388064, 12482665946362458347, 94455115650 ], + [ 17720313647158217462, 16101242875289374781, 130676686676 ], + [ 12334850628290578491, 4708983440241068127, 84872850125 ], + [ 7818499847417334620, 14856666972541426744, 205255274503 ], + [ 136007040922198372, 6938795288315789246, 7805381530 ], + [ 8523477092112604449, 5556307628265073820, 154376152846 ], + [ 367934822655966629, 1441404248927865979, 14301208040 ], + [ 12964987687054730050, 16710378912353838906, 232078138680 ], + [ 15267036012420885462, 18289940136919312110, 56905871455 ], + [ 11142900264750765568, 10217414145292657824, 95991499641 ], + [ 13680181547777718603, 12461165826430955753, 121553887130 ], + [ 13001922925761426065, 662762458988270879, 154675521153 ], + [ 2397730045956515935, 16488546856395302470, 129035928424 ], + [ 4482395522588406288, 2612816787977180950, 104893845916 ], + [ 3255525722490493080, 16446616379327454252, 156141641081 ], + [ 836222287193822098, 7842178508581740643, 121891572860 ], + [ 420898743993182306, 14779029861369369333, 124425125348 ], + [ 11652649973356574054, 2697664446153849542, 228801172814 ], + [ 15058402726661910231, 12135106444393649308, 78146240682 ], + [ 9600134495208339559, 9550285041205189839, 170657845438 ], + [ 14626343323989004842, 8790318168586740109, 190517721989 ], + [ 6813981265331086665, 14038474217155846828, 133476524102 ], + [ 10281745288790487888, 4263144264274812072, 70761027212 ], + [ 17569829347075761940, 11940456333341715520, 140231105513 ], + [ 7654580675237889478, 15751110736831573013, 233647293434 ], + [ 16194838649686212364, 18384528705472318081, 250853869423 ], + [ 6495102772252453635, 2393654818032310394, 111996627298 ], + [ 14935159852819761348, 12812209822018626434, 98129760287 ], + [ 17381879863441579697, 3110778569433458461, 31694551286 ], + [ 9062335510435372583, 2860264756226872891, 246168635644 ], + [ 7569219009130126626, 2384146980060315184, 252155055263 ], + [ 12652124168176193362, 14117430062880324728, 159129244866 ], + [ 8940200224697247767, 3769610173216737153, 194765307417 ], + [ 5600570701927432884, 17731974340232672009, 25204350976 ], + [ 2018432801986093157, 1971479303384713466, 961252255 ], + [ 8235849749361824736, 3449462959779012549, 159106874107 ], + [ 9705097287982370040, 13743454852043766533, 251186995761 ], + [ 3517483139049842585, 7417711187131879498, 49745034180 ], + [ 958281614186777760, 3650992383501007879, 196402114929 ], + [ 7336473432636108950, 12838770342493958662, 113197920693 ], + [ 12955383920176764423, 16025068246546338477, 181695991134 ], + [ 10735469126281273789, 6579965938260177729, 94868720690 ], + [ 8637888232514730693, 4742939430174291459, 50356700668 ], + [ 6806336737533581000, 13062256857527449083, 252257115261 ], + [ 16142569672872330321, 2301174570202439645, 125708106363 ], + [ 8141285259947963513, 7638687886069412887, 123124746923 ], + [ 5220241098754220797, 936322449610274358, 171414094100 ], + [ 154438799943119608, 12926010544311283981, 20050758141 ], + [ 2226876628677628879, 12647854908989899184, 253700720435 ], + [ 17219557081221357482, 8862093163358513015, 51685641588 ], + [ 15401507148161015114, 444784343917630731, 116480415033 ], + [ 8842629766613985337, 11033952249213387263, 57024111807 ], + [ 3180100571546071440, 18168634046363183536, 191598151749 ], + [ 7740848704392475044, 3837904761417065597, 69984923625 ], + [ 2014314126623495998, 111459007020906105, 233208053234 ], + [ 11209566016506885858, 16191761957496794523, 242006042204 ], + [ 7117166613733441125, 9856250800340378607, 92877757174 ], + [ 4197646860931880328, 9491800102275105959, 246534308426 ], + [ 5487263271238026094, 10777328578953608268, 74514551514 ], + [ 18148076225293562697, 17424440628313779505, 218584240152 ], + [ 9127276943027950849, 3285814872419755679, 24944580819 ], + [ 9691696125379324722, 2824823424107240978, 211178124381 ], + [ 13102362262487705216, 12271707680713669755, 93153133984 ], + [ 8929385439893192704, 6951481875178001185, 160665250606 ], + [ 11891353410743566336, 10202522487003824362, 46376840587 ], + [ 1587423090877399040, 4834668463880990728, 139553079852 ], + [ 3489137423026225152, 10871520987687904746, 44262087902 ], + [ 13046928120492326912, 12057698794225322390, 222589346333 ], + [ 11529215046068469760, 7263351819222681214, 29653649161 ], + [ 0, 1778055686910650944, 9393747091 ], + [ 0, 17108187120491986944, 147096388591 ], + [ 0, 3067636961549221888, 239927436682 ], + [ 0, 16702141595163557888, 138166296932 ], + [ 0, 2432053749942845440, 100905424910 ], + [ 0, 17791470327927144448, 14131841897 ], + [ 0, 1152921504606846976, 105964477539 ], + [ 0, 0, 99062500000 ], + [ 0, 0, 160000000000 ], + [ 6674960280855494694, 93326, 0 ], + [ 16378845781483497510, 93326361850321, 0 ], + [ 17606907750956804392, 4283581425266273664, 5059 ], + [ 13225609159240506969, 6725911039793895357, 195232213414 ], + [ 2668084873338435252, 1188689198788975021, 166364612368 ], + [ 14802814305275861366, 10825527435847761650, 16064438970 ], + [ 8005510553372365574, 3917696829526085083, 186586853018 ], + [ 12748500143273514429, 12646861173976387276, 154212378770 ], + [ 10393733905569036127, 18398576063183996905, 146685587717 ], + [ 603389089974790339, 16919251228485834948, 5997388806 ], + [ 2033494532597735873, 17296019588687185052, 6917194446 ], + [ 9204796763694620958, 12365301604512770359, 206937619100 ], + [ 7826260310402107021, 2814271599679204744, 156670324343 ], + [ 10122690201685169383, 2154994415780170517, 119152561969 ], + [ 7438455564568110133, 6717373824370072839, 49116822481 ], + [ 2805412574380520817, 12709155755801344060, 209364149564 ], + [ 7250965427231182867, 826847911966403896, 60688964714 ], + [ 8136242944826085924, 2277322703890025383, 106044823515 ], + [ 15357191647956011780, 2774508958389496437, 219123453911 ], + [ 7369614426695395460, 245697774950120915, 215150406432 ], + [ 10886957545142526638, 1268929063431863950, 32013319303 ], + [ 2030047207417538097, 6735665673159411439, 135068788782 ], + [ 11557093828502314355, 14734771742997073207, 46365141167 ], + [ 15201062539664128543, 13683287077957612495, 175798773576 ], + [ 8846936323343880674, 15370263741354826803, 72741772478 ], + [ 1485291750116245364, 48035913070297507, 190833223667 ], + [ 2076024439668322013, 1206547475966802115, 243002604032 ], + [ 7029497773682748741, 13512340386605768006, 65407069 ], + [ 16333533921668749881, 2325760467700278797, 93732505440 ], + [ 2065057316131928423, 10848110652847753816, 96126079727 ], + [ 7800502648925570223, 15846378960784301285, 239588077256 ], + [ 17011619967093802015, 14121839924449844911, 200859033924 ], + [ 5368819344429198672, 5147613424753296550, 68765546476 ], + [ 15598879366754275267, 16817040482828810167, 236279052682 ], + [ 16393893486035835647, 5773528746119363888, 138911653591 ], + [ 12042046205096920307, 8716201595536184826, 215312983620 ], + [ 15437070428008474344, 5259122109038474872, 68472506235 ], + [ 13704569163204647509, 14744540084230155984, 123285097580 ], + [ 18192483750856993350, 10719345477982635878, 108799303119 ], + [ 5152535865317963250, 13698037261310555208, 207581096882 ], + [ 17512614083933854680, 16141171632951976936, 178742572087 ], + [ 14481918350603613536, 10060790174955808839, 55875014667 ], + [ 16124419709964004915, 4250043307981877118, 11545396528 ], + [ 18088011566435813579, 7075646198054337199, 48230395309 ], + [ 15008862380698848893, 18141738384245531503, 173383571548 ], + [ 18160498644611827812, 8174370508376809531, 92983465608 ], + [ 3604680497457231965, 3581964982731575596, 136443133513 ], + [ 5957615565551495921, 14798509948722114761, 73194178710 ], + [ 17528455034961565995, 14713923334885122090, 150802228831 ], + [ 8503772325120113809, 5042978054260414139, 95797643382 ], + [ 8501492578048509537, 2052996319372883413, 118273380388 ], + [ 2296237701094386060, 8825683007899981588, 36111293153 ], + [ 3753593040591076946, 9992196755378745151, 225478441234 ], + [ 8518075399775653155, 9301073417573669950, 18541678071 ], + [ 12757855675959554597, 5331614769144850592, 247504212200 ], + [ 121631169379748595, 14354009428310052102, 232289027415 ], + [ 16679062494579173314, 5581221063029119078, 87778132410 ], + [ 10739912744743898054, 1529260335339476189, 186302558600 ], + [ 9367340677776287570, 16483061525949201148, 136082901368 ], + [ 12227321512794715397, 14431217812333089675, 120893548555 ], + [ 7241061891859170651, 3452349151135392267, 11782317885 ], + [ 13148571323079237489, 9075317899834447999, 61187152222 ], + [ 12509763434355012654, 2764331337978901575, 94491973969 ], + [ 11812768946960181977, 1942890683708857202, 81149854702 ], + [ 14170358803552564832, 165089169728028447, 238105324315 ], + [ 18179989524780635952, 15193620741871233073, 27008949501 ], + [ 17091718978514754901, 14995000835194145926, 253823647830 ], + [ 7394768384359232459, 1788823614552255558, 86812880624 ], + [ 6778628272692852803, 8384901184618498845, 240096972322 ], + [ 18193335045875234320, 405511217862281310, 34454546404 ], + [ 1378519212560967521, 3111530463755196557, 228021982807 ], + [ 4677732610631043584, 7893558450035460812, 87168676404 ], + [ 17296098591070486528, 156573858237402216, 52427910661 ], + [ 7343735382392963072, 15915324019419451223, 5008487885 ], + [ 14525996728454217728, 16293363012778802804, 205862771443 ], + [ 9691359370008330240, 14342105318291351412, 243883264978 ], + [ 3044433348102455296, 3788398842525387052, 210777487087 ], + [ 9223372036854775808, 14118764407048307670, 239205369512 ], + [ 0, 2705021334614720768, 168765379752 ], + [ 0, 7017988973805568000, 168146639500 ], + [ 0, 10956732053634154496, 140380445944 ], + [ 0, 14657517938546835456, 248593965634 ], + [ 0, 11268868284797157376, 66794585639 ], + [ 0, 14600669991935148032, 39610886573 ], + [ 0, 4611686018427387904, 173791503906 ], + [ 0, 0, 34250000000 ], + [ 0, 0, 128000000000 ], + [ 8201586317771250746, 1424047269, 0 ], + [ 3278889188817135834, 1424047269444608885, 0 ], + [ 1710725240251040430, 3001188830946823627, 77197757 ], + [ 1850175733663425006, 9732296932705387049, 189162694772 ], + [ 9147599666163914249, 16337535782679529459, 116527588873 ], + [ 10221885933644344166, 7969742269895046547, 9885659589 ], + [ 14901479793736678101, 2923592083903829642, 197432040594 ], + [ 5181831442059703136, 8144196241160608534, 146158488244 ], + [ 6396246577759793483, 16431078457793424253, 180441497762 ], + [ 14167229556464870447, 202362949592775653, 162890730548 ], + [ 2969982933326311854, 8835125248522947981, 52010970117 ], + [ 7892677766222018881, 7959873808777345113, 5478953099 ], + [ 798698968922663621, 14929747122315126151, 139431505623 ], + [ 15926812109043458972, 4310328817360515349, 215809343213 ], + [ 8663842590352697437, 7294899422760201126, 237233663393 ], + [ 17093523026636671168, 2047461597291187207, 161395457290 ], + [ 839764004742743203, 10942374468813517900, 10110993115 ], + [ 16894643909298232323, 10364795403063433969, 219593187308 ], + [ 9066702926218949317, 12330859528790939137, 236561876684 ], + [ 9119392417260546810, 8973160144879916806, 204668457234 ], + [ 9723021096578315109, 2895354388547509877, 18486435986 ], + [ 14787464248751217597, 16766844772497556429, 146156957475 ], + [ 3733434565920249133, 7442407174620948827, 35908932476 ], + [ 6643788868836820841, 6683013428676659077, 124403453701 ], + [ 4729646697422664063, 16713703375071907588, 5362286883 ], + [ 4090144564201555829, 8791044883080637861, 35906051675 ], + [ 2109480737093400002, 602844107089214413, 91476563498 ], + [ 16577155033369419739, 9754832281172880875, 42032680244 ], + [ 745377248603805917, 10587846778003503903, 52528810517 ], + [ 11305561465807999667, 17206244172922947013, 21573968323 ], + [ 2211245518782892177, 11620628420699303875, 195932752365 ], + [ 14170095199249735666, 17864732368219338611, 237629955528 ], + [ 17849973668116118927, 4146383014621345887, 200968449082 ], + [ 9020960204585720001, 11445705075042688243, 58224775873 ], + [ 10807134002871850916, 7369147888966546592, 193620472915 ], + [ 3925122626254791201, 9762476865090597796, 83399482307 ], + [ 17208463291312718997, 5507001428194242827, 195529224931 ], + [ 5145077219589447653, 11371471148365328344, 227298535145 ], + [ 17602397765035489468, 3148788104946538618, 233616448686 ], + [ 16422643262490753377, 3762722308424507574, 174170696145 ], + [ 2902509461400906224, 1156171244825745915, 209203977585 ], + [ 3422418805967265206, 14208921674868257865, 113062676168 ], + [ 4228874576277237392, 7903080886897905503, 200770267187 ], + [ 2553488530807495751, 6367240794154270982, 51428426873 ], + [ 11546099176912486413, 1623672396662369850, 121345168815 ], + [ 10460791037534167991, 18323231215381674394, 175088019456 ], + [ 8127117908566000904, 9842279843006544554, 993304354 ], + [ 11541304458088287306, 7376839231308610600, 34533551059 ], + [ 6249718665174839700, 609751749293657672, 211399899256 ], + [ 13102508413386290995, 10386457966860989799, 120033054708 ], + [ 6274675218640661911, 11160336020836149780, 244563051014 ], + [ 3404497118599817167, 17947559933847409193, 6605003027 ], + [ 11258566093988562335, 10229787001712704590, 19972939173 ], + [ 16762592482501635397, 10441677090043619866, 165554557864 ], + [ 5550125446725071998, 4996681336392922375, 168566044449 ], + [ 6370033225258510318, 124497102381021895, 33270870638 ], + [ 1503521728674735398, 8180812057779384577, 110006749001 ], + [ 4250415082606384364, 5294232873532946716, 73443482710 ], + [ 6020091901030562974, 2885620189169448039, 86287000939 ], + [ 16288222967151527138, 16662526875008170507, 107156429783 ], + [ 6377016228656203782, 15663095032402672480, 215903277391 ], + [ 8378856515587563750, 1824281504410546614, 79849098083 ], + [ 15812881490200838483, 9506565509584809953, 99098894498 ], + [ 4548570371183413652, 16941136942345070055, 162515351948 ], + [ 16731431495283420383, 15924115693705937725, 140918380873 ], + [ 14737727629551135532, 9247807690406628462, 73863248041 ], + [ 12413722258104293893, 7993916633864834871, 169501324659 ], + [ 800899742400762438, 1018504409177639408, 115433351089 ], + [ 603197008376033550, 12097800686634130718, 177055213234 ], + [ 6380777281587743935, 6221488888422637551, 178655823089 ], + [ 10001440249018225388, 8229322865256080421, 241337267588 ], + [ 5505914461980436708, 7927745108183101786, 132446112486 ], + [ 1105464290051876864, 8488683721235326653, 230429763923 ], + [ 4500443576769970176, 11165516518170922283, 83460172466 ], + [ 2843045143185981440, 5463648141113596927, 178605283863 ], + [ 660949699682893824, 3958440403860778042, 23296184959 ], + [ 276549164618219520, 5091534813990256011, 127214587484 ], + [ 4683743612465315840, 6100166970623291280, 92276012655 ], + [ 0, 1913011027739012426, 111330690714 ], + [ 0, 11310957650604221440, 154103704535 ], + [ 0, 16303817257009020928, 215613168242 ], + [ 0, 9090406322154766336, 114883831704 ], + [ 0, 3003279315069566976, 152492791914 ], + [ 0, 16582887146675765248, 106162808097 ], + [ 0, 9691746398101307392, 33898960113 ], + [ 0, 0, 241525390625 ], + [ 0, 0, 33000000000 ], ]; diff --git a/src/pretty/to_fixed/mod.rs b/src/pretty/to_fixed/mod.rs index d371b68..3de4801 100644 --- a/src/pretty/to_fixed/mod.rs +++ b/src/pretty/to_fixed/mod.rs @@ -215,6 +215,55 @@ impl Cursor { self.index += count as isize; } + /// Convert `digits` to a sequence of decimal digits. + /// Print the first digit, followed by a decimal dot '.' followed by the remaining digits. + /// The caller has to guarantee that: + /// 10^(olength-1) <= digits < 10^olength + /// + /// e.g., by passing `olength` as `decimal_length9(digits)`. + unsafe fn append_d_digits(&mut self, olength: u32, mut digits: u32) { + let result = self.buffer.offset(self.index); + + let mut i = 0; + while digits >= 10000 { + let c = digits % 10000; + digits /= 10000; + let c0 = (c % 100) << 1; + let c1 = (c / 100) << 1; + + // TODO: Memcpy is very common, wrap functionality in a member function. + // memcpy(result + olength + 1 - i - 2, DIGIT_TABLE + c0, 2); + result + .offset(olength as isize + 1 - i - 2) + .copy_from_nonoverlapping(DIGIT_TABLE.as_ptr().offset(c0 as isize), 2); + // memcpy(result + olength + 1 - i - 4, DIGIT_TABLE + c1, 2); + result + .offset(olength as isize + 1 - i - 4) + .copy_from_nonoverlapping(DIGIT_TABLE.as_ptr().offset(c1 as isize), 2); + + i += 4; + } + if digits >= 100 { + let c = (digits % 100) << 1; + digits /= 100; + // memcpy(result + olength + 1 - i - 2, DIGIT_TABLE + c, 2); + result + .offset(olength as isize + 1 - i - 2) + .copy_from_nonoverlapping(DIGIT_TABLE.as_ptr().offset(c as isize), 2); + } + if digits >= 10 { + let c = digits << 1; + *result.offset(2) = DIGIT_TABLE[c as usize + 1]; + *result.offset(1) = b'.'; + *result.offset(0) = DIGIT_TABLE[c as usize]; + } else { + *result.offset(1) = b'.'; + *result.offset(0) = b'0' + digits as u8; + } + + self.index += olength as isize + 1; // +1 for decimal point + } + /// Get the byte at the given index. /// /// # Safety @@ -268,13 +317,7 @@ fn log10_pow2(e: i32) -> u32 { /// Range `[0, 2]` inclusive. #[cfg_attr(feature = "no-panic", no_panic)] fn index_for_exponent(e: u32) -> u32 { - debug_assert!((0..=MAX_E2 as u32).contains(&e)); - - let result = (e + 15) / 16; - - debug_assert!((0..=2).contains(&result)); - - result + (e + 15) / 16 } #[cfg_attr(feature = "no-panic", no_panic)] @@ -614,7 +657,7 @@ pub unsafe fn format64_to_fixed(f: f64, fraction_digits: u8, result: *mut u8) -> } } - // Roundup if needed. + // Round_up if needed. if round_up { let mut round_index = result.index; let mut dot_index = 0; // '.' can't be located at index 0 @@ -646,3 +689,267 @@ pub unsafe fn format64_to_fixed(f: f64, fraction_digits: u8, result: *mut u8) -> result.index() } + +// TODO: +const MAX_BUFFER_SIZE_EXPONENTIAL: usize = MAX_BUFFER_SIZE; + +/// Print [`f64`] to the given buffer using fixed notation, +/// as defined in the ECMAScript `Number.prototype.toExponential()` method +/// and return number of bytes written. +/// +/// TODO: At most 132 bytes will be written. +/// +/// ## Special cases +/// +/// This function **does not** check for NaN or infinity. If the input +/// number is not a finite float, the printed representation will be some +/// correctly formatted but unspecified numerical value. +/// +/// Please check [`is_finite`] yourself before calling this function, or +/// check [`is_nan`] and [`is_infinite`] and handle those cases yourself. +/// +/// [`is_finite`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_finite +/// [`is_nan`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_nan +/// [`is_infinite`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_infinite +/// +/// ## Safety +/// +/// The `result` pointer argument must point to sufficiently many writable bytes +/// to hold Ryū's representation of `f`. +/// +/// ## Example +/// +/// ``` +/// use std::{mem::MaybeUninit, slice, str}; +/// +/// let f = 1.235f64; +/// +/// unsafe { +/// // TODO: DEFINE MAX +/// let mut buffer = [MaybeUninit::::uninit(); 132]; +/// let len = ryu_js::raw::format64_to_exponential(f, 2, buffer.as_mut_ptr() as *mut u8); +/// let slice = slice::from_raw_parts(buffer.as_ptr() as *const u8, len); +/// let print = str::from_utf8_unchecked(slice); +/// assert_eq!(print, "1.24e+0"); +/// } +/// ``` +#[must_use] +#[cfg_attr(feature = "no-panic", no_panic)] +pub unsafe fn format64_to_exponential(f: f64, mut precision: u8, result: *mut u8) -> usize { + debug_assert!((0..=100).contains(&precision)); + + let mut result = Cursor::new(result, MAX_BUFFER_SIZE_EXPONENTIAL); + + let bits = f.to_bits(); + + // Decode bits into sign, mantissa, and exponent. + let sign = ((bits >> (DOUBLE_MANTISSA_BITS + DOUBLE_EXPONENT_BITS)) & 1) != 0; + let ieee_mantissa = bits & ((1u64 << DOUBLE_MANTISSA_BITS) - 1); + let ieee_exponent = + (bits >> DOUBLE_MANTISSA_BITS) as u32 & ((1u32 << DOUBLE_EXPONENT_BITS) - 1); + + // Special case when it's 0 or -0 it's the same. + // + // Return and append '.' and '0's is needed. + // + // See: https://tc39.es/ecma262/#%E2%84%9D + if ieee_exponent == 0 && ieee_mantissa == 0 { + result.append_byte(b'0'); + if precision > 0 { + result.append_byte(b'.'); + result.append_bytes(b'0', precision as usize); + } + result.append_byte(b'e'); + result.append_byte(b'+'); + result.append_byte(b'0'); + return result.index(); + } + + let (e2, m2) = if ieee_exponent == 0 { + (1 - DOUBLE_BIAS - DOUBLE_MANTISSA_BITS as i32, ieee_mantissa) + } else { + ( + ieee_exponent as i32 - DOUBLE_BIAS - DOUBLE_MANTISSA_BITS as i32, + (1 << DOUBLE_MANTISSA_BITS) | ieee_mantissa, + ) + }; + + let print_decimal_point = precision > 0; + precision += 1; + + let precision = precision as u32; + + if sign { + result.append_byte(b'-'); + } + + let mut digits = 0; + let mut printed_digits = 0; + let mut available_digits = 0; + let mut exp = 0; + + // Write the whole part (integral part) of the floating point. + // + // xxxxxxx.1234567 (write xs) + if e2 >= -(DOUBLE_MANTISSA_BITS as i32) { + let idx = if e2 < 0 { + 0 + } else { + index_for_exponent(e2 as u32) + }; + let p10bits = pow10_bits_for_index(idx); + let len = length_for_index(idx); + + for i in (0..len).rev() { + let j = p10bits as i32 - e2; + + digits = mul_shift_mod1e9( + m2 << 8, + &POW10_SPLIT[POW10_OFFSET[idx as usize] as usize + i as usize], + j + 8, + ); + if printed_digits != 0 { + if printed_digits + 9 > precision { + available_digits = 9; + break; + } + result.append_nine_digits(digits); + printed_digits += 9; + } else if digits != 0 { + available_digits = decimal_length9(digits); + exp = i as i32 * 9 + available_digits as i32 - 1; + if available_digits > precision { + break; + } + if print_decimal_point { + result.append_d_digits(available_digits, digits); + } else { + result.append_byte(b'0' + digits as u8); + } + printed_digits = available_digits; + available_digits = 0; + } + } + } + + if e2 < 0 && available_digits == 0 { + let idx = -e2 / 16; + for i in MIN_BLOCK_2[idx as usize]..200 { + let j = ADDITIONAL_BITS_2 as i32 + (-e2 - 16 * idx); + let p = + POW10_OFFSET_2[idx as usize] as u32 + i as u32 - MIN_BLOCK_2[idx as usize] as u32; + // Temporary: j is usually around 128, and by shifting a bit, we push it to 128 or above, which is + // a slightly faster code path in mulShift_mod1e9. Instead, we can just increase the multipliers. + digits = if p >= POW10_OFFSET_2[idx as usize + 1] as u32 { + 0 + } else { + mul_shift_mod1e9(m2 << 8, &POW10_SPLIT_2[p as usize], j + 8) + }; + + if printed_digits != 0 { + if printed_digits + 9 > precision { + available_digits = 9; + break; + } + result.append_nine_digits(digits); + printed_digits += 9; + } else if digits != 0 { + available_digits = decimal_length9(digits); + exp = -(i as i32 + 1) * 9 + available_digits as i32 - 1; + if available_digits > precision { + break; + } + if print_decimal_point { + result.append_d_digits(available_digits, digits); + } else { + result.append_byte(b'0' + digits as u8); + } + printed_digits = available_digits; + available_digits = 0; + } + } + } + + let maximum = precision - printed_digits; + if available_digits == 0 { + digits = 0; + } + let mut last_digit = 0; + if available_digits > maximum { + for _k in 0..available_digits - maximum { + last_digit = digits % 10; + digits /= 10; + } + } + + // If last digit is >= 5 then round up. + let round_up = last_digit >= 5; + + if printed_digits != 0 { + if digits == 0 { + result.append_bytes(b'0', maximum as usize); + } else { + result.append_c_digits(maximum, digits); + } + } else if print_decimal_point { + result.append_d_digits(maximum, digits); + } else { + result.append_byte(b'0' + digits as u8); + } + + if round_up { + let mut round_index = result.index() as isize; + loop { + round_index -= 1; + if round_index == -1 { + result.set(round_index + 1, b'1'); + exp += 1; + break; + } + + let c = result.get(round_index); + if c == b'-' { + result.set(round_index + 1, b'1'); + exp += 1; + break; + } + + if c == b'.' { + continue; + } else if c == b'9' { + result.set(round_index, b'0'); + continue; + } else { + result.set(round_index, c + 1); + break; + } + } + } + + result.append_byte(b'e'); + if exp < 0 { + result.append_byte(b'-'); + exp = -exp; + } else { + result.append_byte(b'+'); + } + + if exp >= 100 { + let c = exp % 10; + // memcpy(result + index, DIGIT_TABLE + 2 * (exp / 10), 2); + + if DIGIT_TABLE[2 * (exp as usize / 10)] != b'0' { + result.append_byte(DIGIT_TABLE[2 * (exp as usize / 10)]); + } + result.append_byte(DIGIT_TABLE[2 * (exp as usize / 10) + 1]); + result.append_byte(b'0' + c as u8); + } else { + // OLD: memcpy(result + index, DIGIT_TABLE + 2 * exp, 2); + if DIGIT_TABLE[2 * exp as usize] != b'0' { + result.append_byte(DIGIT_TABLE[2 * exp as usize]); + } + result.append_byte(DIGIT_TABLE[2 * exp as usize + 1]); + } + + result.index() +} diff --git a/tests/to_exponential.rs b/tests/to_exponential.rs new file mode 100644 index 0000000..9f3db80 --- /dev/null +++ b/tests/to_exponential.rs @@ -0,0 +1,377 @@ +#![allow( + clippy::approx_constant, + clippy::excessive_precision, + clippy::cast_lossless, + clippy::float_cmp, + clippy::int_plus_one, + clippy::non_ascii_literal, + clippy::unreadable_literal, + clippy::unseparated_literal_suffix +)] + +fn f(f: f64, precision: u8) -> String { + ryu_js::Buffer::new() + .format_to_exponential(f, precision) + .to_owned() +} + +#[test] +fn nan() { + for fraction_digits in 0..=100u8 { + assert_eq!(f(f64::NAN, fraction_digits), "NaN"); + } +} + +#[test] +fn infinity() { + for fraction_digits in 0..=100u8 { + assert_eq!(f(f64::INFINITY, fraction_digits), "Infinity"); + } + for fraction_digits in 0..=100u8 { + assert_eq!(f(f64::NEG_INFINITY, fraction_digits), "-Infinity"); + } +} + +#[test] +fn positive_zero() { + assert_eq!(f(0.0, 0), "0e+0"); + for precision in 1..=100u8 { + let expected = "0".repeat(usize::from(precision)); + assert_eq!(f(0.0, precision), format!("0.{expected}e+0")); + } +} + +#[test] +fn negative_zero() { + assert_eq!(f(-0.0, 0), "0e+0"); + for precision in 1..=100u8 { + let expected = "0".repeat(usize::from(precision)); + assert_eq!(f(-0.0, precision), format!("0.{expected}e+0")); + } +} + +// const WHOLE_NUMBERS: &[f64] = &[ +// 1.0, +// 10.0, +// 100.0, +// 123.0, +// 1234567890.0, +// 12_345_678_910_111_213.0, +// 9_007_199_254_740_992.0, +// ]; + +// #[track_caller] +// fn check_whole_number(test_case: usize, number: f64) { +// for precision in 0..=100usize { +// let whole = (number as u64).to_string(); +// let len = whole.len(); + +// let mut fraction = whole[1..].chars().take(precision).collect::(); +// let fraction_len = fraction.len(); +// let mut rest = whole[1 + fraction_len..] +// .as_bytes() +// .iter() +// .map(|&c| c - b'0') +// .collect::>(); +// let mut increment = false; + +// if !rest.is_empty() { +// *rest.last_mut().unwrap() += 1; +// for i in (1..rest.len()).rev() { +// if rest[i] >= 5 { +// rest[i - 1] += 1; +// } +// } + +// increment = rest[0] >= 5; +// } +// while fraction.len() < precision { +// fraction.push('0'); +// } +// if precision != 0 { +// fraction = format!(".{fraction}"); +// } + +// let expected = format!( +// "{}{fraction}e+{}", +// &whole.get(..1).unwrap_or(&whole), +// len - 1 +// ); + +// assert_eq!( +// pretty_to_exponential(number, precision as u8), +// expected, +// "Test case {test_case}. expected {number} with precision {precision} to equal {expected}" +// ); +// } +// } + +// #[test] +// fn test_positive_whole_numbers() { +// for (test_case, number) in WHOLE_NUMBERS.iter().copied().enumerate() { +// check_whole_number(test_case, number); +// } +// } + +#[test] +#[rustfmt::skip] +fn return_vlaues() { + assert_eq!(f(123.456, 0), "1e+2"); + assert_eq!(f(123.456, 1), "1.2e+2"); + assert_eq!(f(123.456, 2), "1.23e+2"); + assert_eq!(f(123.456, 3), "1.235e+2"); + assert_eq!(f(123.456, 4), "1.2346e+2"); + assert_eq!(f(123.456, 5), "1.23456e+2"); + assert_eq!(f(123.456, 6), "1.234560e+2"); + assert_eq!(f(123.456, 7), "1.2345600e+2"); + assert_eq!(f(123.456, 17), "1.23456000000000003e+2"); + assert_eq!(f(123.456, 20), "1.23456000000000003070e+2"); + + assert_eq!(f(-123.456, 0), "-1e+2"); + assert_eq!(f(-123.456, 1), "-1.2e+2"); + assert_eq!(f(-123.456, 2), "-1.23e+2"); + assert_eq!(f(-123.456, 3), "-1.235e+2"); + assert_eq!(f(-123.456, 4), "-1.2346e+2"); + assert_eq!(f(-123.456, 5), "-1.23456e+2"); + assert_eq!(f(-123.456, 6), "-1.234560e+2"); + assert_eq!(f(-123.456, 7), "-1.2345600e+2"); + assert_eq!(f(-123.456, 17), "-1.23456000000000003e+2"); + assert_eq!(f(-123.456, 20), "-1.23456000000000003070e+2"); + + assert_eq!(f(0.0001, 0), "1e-4"); + assert_eq!(f(0.0001, 1), "1.0e-4"); + assert_eq!(f(0.0001, 2), "1.00e-4"); + assert_eq!(f(0.0001, 3), "1.000e-4"); + assert_eq!(f(0.0001, 4), "1.0000e-4"); + assert_eq!(f(0.0001, 16), "1.0000000000000000e-4"); + assert_eq!(f(0.0001, 17), "1.00000000000000005e-4"); + assert_eq!(f(0.0001, 18), "1.000000000000000048e-4"); + assert_eq!(f(0.0001, 19), "1.0000000000000000479e-4"); + assert_eq!(f(0.0001, 20), "1.00000000000000004792e-4"); + + assert_eq!(f(0.9999, 0), "1e+0"); + assert_eq!(f(0.9999, 1), "1.0e+0"); + assert_eq!(f(0.9999, 2), "1.00e+0"); + assert_eq!(f(0.9999, 3), "9.999e-1"); + assert_eq!(f(0.9999, 4), "9.9990e-1"); + assert_eq!(f(0.9999, 16), "9.9990000000000001e-1"); + assert_eq!(f(0.9999, 17), "9.99900000000000011e-1"); + assert_eq!(f(0.9999, 18), "9.999000000000000110e-1"); + assert_eq!(f(0.9999, 19), "9.9990000000000001101e-1"); + assert_eq!(f(0.9999, 20), "9.99900000000000011013e-1"); + + assert_eq!(f(25.0, 0), "3e+1"); + assert_eq!(f(12345.0, 3), "1.235e+4"); +} + +#[test] +#[rustfmt::skip] +fn test_max() { + assert_eq!(f(f64::MAX, 0), "2e+308"); + assert_eq!(f(f64::MAX, 1), "1.8e+308"); + assert_eq!(f(f64::MAX, 2), "1.80e+308"); + assert_eq!(f(f64::MAX, 3), "1.798e+308"); + assert_eq!(f(f64::MAX, 4), "1.7977e+308"); + assert_eq!(f(f64::MAX, 5), "1.79769e+308"); + assert_eq!(f(f64::MAX, 6), "1.797693e+308"); + assert_eq!(f(f64::MAX, 7), "1.7976931e+308"); + assert_eq!(f(f64::MAX, 8), "1.79769313e+308"); + assert_eq!(f(f64::MAX, 9), "1.797693135e+308"); + assert_eq!(f(f64::MAX, 10), "1.7976931349e+308"); + assert_eq!(f(f64::MAX, 11), "1.79769313486e+308"); + assert_eq!(f(f64::MAX, 12), "1.797693134862e+308"); + assert_eq!(f(f64::MAX, 13), "1.7976931348623e+308"); + assert_eq!(f(f64::MAX, 14), "1.79769313486232e+308"); + assert_eq!(f(f64::MAX, 15), "1.797693134862316e+308"); + assert_eq!(f(f64::MAX, 16), "1.7976931348623157e+308"); + assert_eq!(f(f64::MAX, 17), "1.79769313486231571e+308"); + assert_eq!(f(f64::MAX, 18), "1.797693134862315708e+308"); + assert_eq!(f(f64::MAX, 19), "1.7976931348623157081e+308"); + assert_eq!(f(f64::MAX, 20), "1.79769313486231570815e+308"); + assert_eq!(f(f64::MAX, 21), "1.797693134862315708145e+308"); + assert_eq!(f(f64::MAX, 22), "1.7976931348623157081453e+308"); + assert_eq!(f(f64::MAX, 23), "1.79769313486231570814527e+308"); + assert_eq!(f(f64::MAX, 24), "1.797693134862315708145274e+308"); + assert_eq!(f(f64::MAX, 25), "1.7976931348623157081452742e+308"); + assert_eq!(f(f64::MAX, 26), "1.79769313486231570814527424e+308"); + assert_eq!(f(f64::MAX, 27), "1.797693134862315708145274237e+308"); + assert_eq!(f(f64::MAX, 28), "1.7976931348623157081452742373e+308"); + assert_eq!(f(f64::MAX, 29), "1.79769313486231570814527423732e+308"); + assert_eq!(f(f64::MAX, 30), "1.797693134862315708145274237317e+308"); + assert_eq!(f(f64::MAX, 31), "1.7976931348623157081452742373170e+308"); + assert_eq!(f(f64::MAX, 32), "1.79769313486231570814527423731704e+308"); + assert_eq!(f(f64::MAX, 33), "1.797693134862315708145274237317044e+308"); + assert_eq!(f(f64::MAX, 34), "1.7976931348623157081452742373170436e+308"); + assert_eq!(f(f64::MAX, 35), "1.79769313486231570814527423731704357e+308"); + assert_eq!(f(f64::MAX, 36), "1.797693134862315708145274237317043568e+308"); + assert_eq!(f(f64::MAX, 37), "1.7976931348623157081452742373170435680e+308"); + assert_eq!(f(f64::MAX, 38), "1.79769313486231570814527423731704356798e+308"); + assert_eq!(f(f64::MAX, 39), "1.797693134862315708145274237317043567981e+308"); + assert_eq!(f(f64::MAX, 40), "1.7976931348623157081452742373170435679807e+308"); + assert_eq!(f(f64::MAX, 41), "1.79769313486231570814527423731704356798071e+308"); + assert_eq!(f(f64::MAX, 42), "1.797693134862315708145274237317043567980706e+308"); + assert_eq!(f(f64::MAX, 43), "1.7976931348623157081452742373170435679807057e+308"); + assert_eq!(f(f64::MAX, 44), "1.79769313486231570814527423731704356798070568e+308"); + assert_eq!(f(f64::MAX, 45), "1.797693134862315708145274237317043567980705675e+308"); + assert_eq!(f(f64::MAX, 46), "1.7976931348623157081452742373170435679807056753e+308"); + assert_eq!(f(f64::MAX, 47), "1.79769313486231570814527423731704356798070567526e+308"); + assert_eq!(f(f64::MAX, 48), "1.797693134862315708145274237317043567980705675258e+308"); + assert_eq!(f(f64::MAX, 49), "1.7976931348623157081452742373170435679807056752584e+308"); + assert_eq!(f(f64::MAX, 50), "1.79769313486231570814527423731704356798070567525845e+308"); + assert_eq!(f(f64::MAX, 51), "1.797693134862315708145274237317043567980705675258450e+308"); + assert_eq!(f(f64::MAX, 52), "1.7976931348623157081452742373170435679807056752584500e+308"); + assert_eq!(f(f64::MAX, 53), "1.79769313486231570814527423731704356798070567525844997e+308"); + assert_eq!(f(f64::MAX, 54), "1.797693134862315708145274237317043567980705675258449966e+308"); + assert_eq!(f(f64::MAX, 55), "1.7976931348623157081452742373170435679807056752584499660e+308"); + assert_eq!(f(f64::MAX, 56), "1.79769313486231570814527423731704356798070567525844996599e+308"); + assert_eq!(f(f64::MAX, 57), "1.797693134862315708145274237317043567980705675258449965989e+308"); + assert_eq!(f(f64::MAX, 58), "1.7976931348623157081452742373170435679807056752584499659892e+308"); + assert_eq!(f(f64::MAX, 59), "1.79769313486231570814527423731704356798070567525844996598917e+308"); + assert_eq!(f(f64::MAX, 60), "1.797693134862315708145274237317043567980705675258449965989175e+308"); + assert_eq!(f(f64::MAX, 61), "1.7976931348623157081452742373170435679807056752584499659891748e+308"); + assert_eq!(f(f64::MAX, 62), "1.79769313486231570814527423731704356798070567525844996598917477e+308"); + assert_eq!(f(f64::MAX, 63), "1.797693134862315708145274237317043567980705675258449965989174768e+308"); + assert_eq!(f(f64::MAX, 64), "1.7976931348623157081452742373170435679807056752584499659891747680e+308"); + assert_eq!(f(f64::MAX, 65), "1.79769313486231570814527423731704356798070567525844996598917476803e+308"); + assert_eq!(f(f64::MAX, 66), "1.797693134862315708145274237317043567980705675258449965989174768032e+308"); + assert_eq!(f(f64::MAX, 67), "1.7976931348623157081452742373170435679807056752584499659891747680316e+308"); + assert_eq!(f(f64::MAX, 68), "1.79769313486231570814527423731704356798070567525844996598917476803157e+308"); + assert_eq!(f(f64::MAX, 69), "1.797693134862315708145274237317043567980705675258449965989174768031573e+308"); + assert_eq!(f(f64::MAX, 70), "1.7976931348623157081452742373170435679807056752584499659891747680315726e+308"); + assert_eq!(f(f64::MAX, 71), "1.79769313486231570814527423731704356798070567525844996598917476803157261e+308"); + assert_eq!(f(f64::MAX, 72), "1.797693134862315708145274237317043567980705675258449965989174768031572608e+308"); + assert_eq!(f(f64::MAX, 73), "1.7976931348623157081452742373170435679807056752584499659891747680315726078e+308"); + assert_eq!(f(f64::MAX, 74), "1.79769313486231570814527423731704356798070567525844996598917476803157260780e+308"); + assert_eq!(f(f64::MAX, 75), "1.797693134862315708145274237317043567980705675258449965989174768031572607800e+308"); + assert_eq!(f(f64::MAX, 76), "1.7976931348623157081452742373170435679807056752584499659891747680315726078003e+308"); + assert_eq!(f(f64::MAX, 77), "1.79769313486231570814527423731704356798070567525844996598917476803157260780029e+308"); + assert_eq!(f(f64::MAX, 78), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285e+308"); + assert_eq!(f(f64::MAX, 79), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002854e+308"); + assert_eq!(f(f64::MAX, 80), "1.79769313486231570814527423731704356798070567525844996598917476803157260780028539e+308"); + assert_eq!(f(f64::MAX, 81), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285388e+308"); + assert_eq!(f(f64::MAX, 82), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876e+308"); + assert_eq!(f(f64::MAX, 83), "1.79769313486231570814527423731704356798070567525844996598917476803157260780028538761e+308"); + assert_eq!(f(f64::MAX, 84), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285387606e+308"); + assert_eq!(f(f64::MAX, 85), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876059e+308"); + assert_eq!(f(f64::MAX, 86), "1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760590e+308"); + assert_eq!(f(f64::MAX, 87), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605896e+308"); + assert_eq!(f(f64::MAX, 88), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058956e+308"); + assert_eq!(f(f64::MAX, 89), "1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589559e+308"); + assert_eq!(f(f64::MAX, 90), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586e+308"); + assert_eq!(f(f64::MAX, 91), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863e+308"); + assert_eq!(f(f64::MAX, 92), "1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558633e+308"); + assert_eq!(f(f64::MAX, 93), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586328e+308"); + assert_eq!(f(f64::MAX, 94), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863277e+308"); + assert_eq!(f(f64::MAX, 95), "1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632767e+308"); + assert_eq!(f(f64::MAX, 96), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327669e+308"); + assert_eq!(f(f64::MAX, 97), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863276688e+308"); + assert_eq!(f(f64::MAX, 98), "1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878e+308"); + assert_eq!(f(f64::MAX, 99), "1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668782e+308"); + assert_eq!(f(f64::MAX, 100), "1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863276687817e+308"); +} + +#[test] +#[rustfmt::skip] +fn test_min() { + assert_eq!(f(f64::MIN, 0), "-2e+308"); + assert_eq!(f(f64::MIN, 1), "-1.8e+308"); + assert_eq!(f(f64::MIN, 2), "-1.80e+308"); + assert_eq!(f(f64::MIN, 3), "-1.798e+308"); + assert_eq!(f(f64::MIN, 4), "-1.7977e+308"); + assert_eq!(f(f64::MIN, 5), "-1.79769e+308"); + assert_eq!(f(f64::MIN, 6), "-1.797693e+308"); + assert_eq!(f(f64::MIN, 7), "-1.7976931e+308"); + assert_eq!(f(f64::MIN, 8), "-1.79769313e+308"); + assert_eq!(f(f64::MIN, 9), "-1.797693135e+308"); + assert_eq!(f(f64::MIN, 10), "-1.7976931349e+308"); + assert_eq!(f(f64::MIN, 11), "-1.79769313486e+308"); + assert_eq!(f(f64::MIN, 12), "-1.797693134862e+308"); + assert_eq!(f(f64::MIN, 13), "-1.7976931348623e+308"); + assert_eq!(f(f64::MIN, 14), "-1.79769313486232e+308"); + assert_eq!(f(f64::MIN, 15), "-1.797693134862316e+308"); + assert_eq!(f(f64::MIN, 16), "-1.7976931348623157e+308"); + assert_eq!(f(f64::MIN, 17), "-1.79769313486231571e+308"); + assert_eq!(f(f64::MIN, 18), "-1.797693134862315708e+308"); + assert_eq!(f(f64::MIN, 19), "-1.7976931348623157081e+308"); + assert_eq!(f(f64::MIN, 20), "-1.79769313486231570815e+308"); + assert_eq!(f(f64::MIN, 21), "-1.797693134862315708145e+308"); + assert_eq!(f(f64::MIN, 22), "-1.7976931348623157081453e+308"); + assert_eq!(f(f64::MIN, 23), "-1.79769313486231570814527e+308"); + assert_eq!(f(f64::MIN, 24), "-1.797693134862315708145274e+308"); + assert_eq!(f(f64::MIN, 25), "-1.7976931348623157081452742e+308"); + assert_eq!(f(f64::MIN, 26), "-1.79769313486231570814527424e+308"); + assert_eq!(f(f64::MIN, 27), "-1.797693134862315708145274237e+308"); + assert_eq!(f(f64::MIN, 28), "-1.7976931348623157081452742373e+308"); + assert_eq!(f(f64::MIN, 29), "-1.79769313486231570814527423732e+308"); + assert_eq!(f(f64::MIN, 30), "-1.797693134862315708145274237317e+308"); + assert_eq!(f(f64::MIN, 31), "-1.7976931348623157081452742373170e+308"); + assert_eq!(f(f64::MIN, 32), "-1.79769313486231570814527423731704e+308"); + assert_eq!(f(f64::MIN, 33), "-1.797693134862315708145274237317044e+308"); + assert_eq!(f(f64::MIN, 34), "-1.7976931348623157081452742373170436e+308"); + assert_eq!(f(f64::MIN, 35), "-1.79769313486231570814527423731704357e+308"); + assert_eq!(f(f64::MIN, 36), "-1.797693134862315708145274237317043568e+308"); + assert_eq!(f(f64::MIN, 37), "-1.7976931348623157081452742373170435680e+308"); + assert_eq!(f(f64::MIN, 38), "-1.79769313486231570814527423731704356798e+308"); + assert_eq!(f(f64::MIN, 39), "-1.797693134862315708145274237317043567981e+308"); + assert_eq!(f(f64::MIN, 40), "-1.7976931348623157081452742373170435679807e+308"); + assert_eq!(f(f64::MIN, 41), "-1.79769313486231570814527423731704356798071e+308"); + assert_eq!(f(f64::MIN, 42), "-1.797693134862315708145274237317043567980706e+308"); + assert_eq!(f(f64::MIN, 43), "-1.7976931348623157081452742373170435679807057e+308"); + assert_eq!(f(f64::MIN, 44), "-1.79769313486231570814527423731704356798070568e+308"); + assert_eq!(f(f64::MIN, 45), "-1.797693134862315708145274237317043567980705675e+308"); + assert_eq!(f(f64::MIN, 46), "-1.7976931348623157081452742373170435679807056753e+308"); + assert_eq!(f(f64::MIN, 47), "-1.79769313486231570814527423731704356798070567526e+308"); + assert_eq!(f(f64::MIN, 48), "-1.797693134862315708145274237317043567980705675258e+308"); + assert_eq!(f(f64::MIN, 49), "-1.7976931348623157081452742373170435679807056752584e+308"); + assert_eq!(f(f64::MIN, 50), "-1.79769313486231570814527423731704356798070567525845e+308"); + assert_eq!(f(f64::MIN, 51), "-1.797693134862315708145274237317043567980705675258450e+308"); + assert_eq!(f(f64::MIN, 52), "-1.7976931348623157081452742373170435679807056752584500e+308"); + assert_eq!(f(f64::MIN, 53), "-1.79769313486231570814527423731704356798070567525844997e+308"); + assert_eq!(f(f64::MIN, 54), "-1.797693134862315708145274237317043567980705675258449966e+308"); + assert_eq!(f(f64::MIN, 55), "-1.7976931348623157081452742373170435679807056752584499660e+308"); + assert_eq!(f(f64::MIN, 56), "-1.79769313486231570814527423731704356798070567525844996599e+308"); + assert_eq!(f(f64::MIN, 57), "-1.797693134862315708145274237317043567980705675258449965989e+308"); + assert_eq!(f(f64::MIN, 58), "-1.7976931348623157081452742373170435679807056752584499659892e+308"); + assert_eq!(f(f64::MIN, 59), "-1.79769313486231570814527423731704356798070567525844996598917e+308"); + assert_eq!(f(f64::MIN, 60), "-1.797693134862315708145274237317043567980705675258449965989175e+308"); + assert_eq!(f(f64::MIN, 61), "-1.7976931348623157081452742373170435679807056752584499659891748e+308"); + assert_eq!(f(f64::MIN, 62), "-1.79769313486231570814527423731704356798070567525844996598917477e+308"); + assert_eq!(f(f64::MIN, 63), "-1.797693134862315708145274237317043567980705675258449965989174768e+308"); + assert_eq!(f(f64::MIN, 64), "-1.7976931348623157081452742373170435679807056752584499659891747680e+308"); + assert_eq!(f(f64::MIN, 65), "-1.79769313486231570814527423731704356798070567525844996598917476803e+308"); + assert_eq!(f(f64::MIN, 66), "-1.797693134862315708145274237317043567980705675258449965989174768032e+308"); + assert_eq!(f(f64::MIN, 67), "-1.7976931348623157081452742373170435679807056752584499659891747680316e+308"); + assert_eq!(f(f64::MIN, 68), "-1.79769313486231570814527423731704356798070567525844996598917476803157e+308"); + assert_eq!(f(f64::MIN, 69), "-1.797693134862315708145274237317043567980705675258449965989174768031573e+308"); + assert_eq!(f(f64::MIN, 70), "-1.7976931348623157081452742373170435679807056752584499659891747680315726e+308"); + assert_eq!(f(f64::MIN, 71), "-1.79769313486231570814527423731704356798070567525844996598917476803157261e+308"); + assert_eq!(f(f64::MIN, 72), "-1.797693134862315708145274237317043567980705675258449965989174768031572608e+308"); + assert_eq!(f(f64::MIN, 73), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078e+308"); + assert_eq!(f(f64::MIN, 74), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780e+308"); + assert_eq!(f(f64::MIN, 75), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800e+308"); + assert_eq!(f(f64::MIN, 76), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078003e+308"); + assert_eq!(f(f64::MIN, 77), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780029e+308"); + assert_eq!(f(f64::MIN, 78), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285e+308"); + assert_eq!(f(f64::MIN, 79), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002854e+308"); + assert_eq!(f(f64::MIN, 80), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780028539e+308"); + assert_eq!(f(f64::MIN, 81), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285388e+308"); + assert_eq!(f(f64::MIN, 82), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876e+308"); + assert_eq!(f(f64::MIN, 83), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538761e+308"); + assert_eq!(f(f64::MIN, 84), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285387606e+308"); + assert_eq!(f(f64::MIN, 85), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876059e+308"); + assert_eq!(f(f64::MIN, 86), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760590e+308"); + assert_eq!(f(f64::MIN, 87), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605896e+308"); + assert_eq!(f(f64::MIN, 88), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058956e+308"); + assert_eq!(f(f64::MIN, 89), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589559e+308"); + assert_eq!(f(f64::MIN, 90), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586e+308"); + assert_eq!(f(f64::MIN, 91), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863e+308"); + assert_eq!(f(f64::MIN, 92), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558633e+308"); + assert_eq!(f(f64::MIN, 93), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586328e+308"); + assert_eq!(f(f64::MIN, 94), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863277e+308"); + assert_eq!(f(f64::MIN, 95), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632767e+308"); + assert_eq!(f(f64::MIN, 96), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327669e+308"); + assert_eq!(f(f64::MIN, 97), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863276688e+308"); + assert_eq!(f(f64::MIN, 98), "-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878e+308"); + assert_eq!(f(f64::MIN, 99), "-1.797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668782e+308"); + assert_eq!(f(f64::MIN, 100), "-1.7976931348623157081452742373170435679807056752584499659891747680315726078002853876058955863276687817e+308"); +}