/* Looking for alternative way to factorize numbers. */ use algexenotation::*; use rand; fn main() { /* // 11000000110000001100000011 let pat: u64 = 0b1111110000000000000000000000000000000000000000000000000000000000; println!("{}", prime_prod(pat).unwrap()); */ for p in PAT { assert_eq!(prime_prod(p.0).unwrap(), p.1); } let end = 100; let reference = PAT_100; 'outer: loop { let mut pat: Vec<(u64, u64)> = PAT.into(); while let Some(x) = find_pat(end, 0.08, &pat) { pat.push((x, prime_prod(x).unwrap())); if pat.len() > reference.len() {continue 'outer}; } if pat.len() < reference.len() { println!("{:?}", pat); println!("{}", pat.len()); break; } else { println!("{}", pat.len()); } } /* let mut missing: u64 = 0; for i in 2..end { if prime_with_lookup(i) && prime_pat(i, &pat).count_ones() != 1 && count_primes(i) < 64 { print!("{}, ", i); let c = count_primes(i); if c < 64 { let old_missing = missing; missing |= 1 << c; if prime_prod(missing).is_none() { missing = old_missing; break; } } } } println!(""); println!("{:b}", missing); */ } pub fn find_pat(end: u64, prob: f64, tab: &[(u64, u64)]) -> Option { let mut start = 2; let p = prob; loop { let mut prev_pat: Option = None; let mut collision = false; for n in 2..end { let x = prime_pat(n, tab); let y = prime_prod(x).unwrap_or(0); if y != 0 { if n != y { collision = true; prev_pat = match prev_pat { Some(prev_pat) => { if rand::random::() < p { let z = refine_pat(n, x); match pack_pat(z, prev_pat) { Some(x) => Some(x), None => break, } } else {continue} } None => { Some(refine_pat(n, x)) } }; } }; if !collision && n > start { start = n; // println!("start {}", start); }; } if let Some(prev_pat) = prev_pat { if !tab.iter().any(|n| n.0 == prev_pat) { // println!("({}, {}),", prev_pat, prime_prod(prev_pat).unwrap()); return Some(prev_pat) } else { continue; } } return None; } } pub fn prime_prod(pat: u64) -> Option { if pat == !0 {return None}; let mut prod: u64 = 1; for i in 0..64_u64 { prod = prod.checked_mul(if (pat >> i) & 1 == 1 {nth_prime_with_lookup(i)} else {1})?; } Some(prod) } /// Packs two bit patterns together. pub fn pack_pat(a: u64, b: u64) -> Option { let res = a | b; if prime_prod(res).is_none() {None} else {Some(res)} } pub fn refine_pat(n: u64, mut pat: u64) -> u64 { for i in 0..64 { if (pat >> i) & 1 == 1 { if n % nth_prime_with_lookup(i) != 0 { pat &= !(1 << i); } } } pat } pub fn prime_pat(i: u64, tab: &[(u64, u64)]) -> u64 { let mut pat: u64 = !0; for p in tab { if p.1 % i == 0 { pat &= p.0; } } pat } const PAT: &'static [(u64, u64)] = &[ (0b101010101010101010101010, 386247406926641169), (0b01010101010101010101010101, 5969148070898009030), (0b101010101010101010_000000000000000000000000, 17137951938138366611), (0b10101010101010101_000000000000000000000000, 13249978329312826369), (0b11111111000000000000000000000000000000000000000000, 3534749459194562711), (0b1111111100000000000000000000000000000000000000000000000000, 16597972042436927953), (0b1111110000000000000000000000000000000000000000000000000000000000, 616224426563831), ]; pub const PAT_100: &'static [(u64, u64)] = &[(11184810, 386247406926641169), (22369621, 5969148070898009030), (2932019822592, 17137951938138366611), (1466009911296, 13249978329312826369), (1121501860331520, 3534749459194562711), (287104476244869120, 16597972042436927953), (18158513697557839872, 616224426563831), (2097413, 18170), (12869, 8691590), (1114177, 146438), (1590403, 860885934), (16387, 282), (4243476, 11371415), (163, 1482), (1051656, 586117), (5130, 26691), (788820, 3785073545), (8388624, 979), (4194721, 943046), (66083, 133458), (8209, 946), (65576, 5369), (393216, 4087), (1025, 62), (4611, 7134)]; pub const PAT_1_000: &'static [(u64, u64)] = &[(11184810, 386247406926641169), (22369621, 5969148070898009030), (2932019822592, 17137951938138366611), (1466009911296, 13249978329312826369), (1121501860331520, 3534749459194562711), (287104476244869120, 16597972042436927953), (18158513697557839872, 616224426563831), (1127003814110593, 69251582114762434), (43981547553875, 2520038605750432734), (3298535022015, 1219678826712175830), (285875172049503, 1676729293084722030), (68719906559, 10972344381510201690), (703689589834415, 1779745744544987310), (144189972046947471, 614515406651400030), (576469549537824135, 757406508727378110), (25779309279, 6355945597095140970), (703687450701375, 13860340654157707710), (274887299111, 191235183782542770), (2322168558003199, 855780399406342410), (288230376153918655, 1925641993363858770), (72620548286397007, 3362641678127274690), (17592187122943, 358309897621665990), (18155136010557551, 1818164063709774690), (3356950647, 2285306828643811830), (35184980267965, 999871537917842590), (1108106094719, 6630513615134198790), (36028797159478621, 70608623152803890), (1153203013945786718, 1414424305425415515), (103079282687, 280526564831202690), (2314850210620735759, 857480180266972290), (34374948511, 10121377324093480830), (828997386639, 9113814075846256770), (275015344815, 393264652994579730), (8690714813, 1495507310782675190), (144115256837277691, 15341071768628163558), (2233421398583, 123452094364285830), (84198909, 3844002123162931730), (841814139966, 287515018546841085), (9070982475949, 504267575435479310), (68956526603, 51898643030127138), (211449833074823, 7149580514258333790), (2381563695171, 1717596626126077482), (17729629794967, 3578987110694866530), (4611686052854438951, 315171018936299370), (178125179785367, 1218381653680869810), (9223372589833033735, 9614283163934060490), (4676145909947, 166349861356140462), (35742718399134, 469856931287608095), (703691737997735, 13470388422043489170), (9024791457653095, 87211021116644490), (9024810790223875, 200804508988574406), (4719790552500469765, 3937973729266229470), (720576026282885907, 384026686490076762), (73119688753167, 4632059876979890670), (306244774712639879, 39380712001459410), (703693889142787, 116627709476353458), (144607769301952579, 2688292768104968286), (4508135197065259, 7604388356155878378), (19175551512150387, 3073519143205660578), (9007199306318445, 289841019009648470), (4541671291289987, 4809177663539870766), (2630665132346253341, 849845187212383670), (288230377226582127, 458694958209936630), (4614087356134293539, 10235598308061558198), (18014467234801753, 4265637153743019362), (4554276014111, 335702920985033910), (3763537950, 1751942981368129935), (3377700559422031, 380121313065394110), (1266657032929671, 13027435097660360310), (36033229743984677, 43173064630295470), (5192791110799327333, 16532369824709359270), (2251937571418221, 1134612953205214210), (1688987567688283, 423420610709752194), (396881916202058083, 2402951189121361086), (144475828426639843, 6069320070466954002), (1099512810491, 38161121920395474), (72568186865383, 4892939672394999030), (585627380744193255, 2165872987024128330), (30098328831, 3188337462093794010), (162732082990438, 10354688414874469965), (9367566389784611603, 542266370726828154), (1099662623110, 12178147755), (11529215140557819939, 55906100579604522), (351998373789741, 7591075311882790), (10414574171848714, 28157634561), (35184640524492, 245216755), (11533718783412666407, 988636472048143230), (2203636992270, 2366124580116255), (37383395610917, 295843137070), (148618787711942694, 4480616416965), (9223380901667427927, 5586649860489195630), (68719485250, 7918923), (8933674582814, 230795063751945), (36662115783672394, 13551180337023), (9223372045444714538, 483862197), (144115188075872321, 433058), (77310465956, 1667921684146705), (9223372036854906897, 417362), (4831842380, 377658995), (2251799813685250, 717), (18014399583223818, 685419), (36028797018963970, 789), (536877320, 27598781), (2305843009213710402, 702321), (1224979100792258570, 209425377), (288230382594162698, 104397699), (576460752303423490, 843), (1152921504606846978, 849), (1075839000, 772541), (1099513724948, 777755), (16512, 893), (4611686018427420738, 829821), (2147483656, 917), (194, 969)]; pub const PAT_10_000: &'static [(u64, u64)] = &[(11184810, 386247406926641169), (22369621, 5969148070898009030), (2932019822592, 17137951938138366611), (1466009911296, 13249978329312826369), (1121501860331520, 3534749459194562711), (287104476244869120, 16597972042436927953), (18158513697557839872, 616224426563831), (282574530610453, 113239853268750230), (2305843009518045903, 1242621676073639190), (105553117070063, 240065476004655210), (4688247212094866027, 1173611133773765778), (2377900603251723519, 2742010124506022370), (274945552127, 16943369050148450910), (1152921505682187383, 851148986270158290), (9007201402501567, 1885865108174117070), (70368745323102, 1586492870835499935), (3377699729476011, 164647010900965866), (18016631893397567, 2509520922435096570), (4504218102933983, 11974299561342225030), (71502749799071, 1687794301801513290), (576471816139246349, 157079483953337470), (274884379319, 393309202872381510), (1125899978411391, 1797386801632512090), (137443457119, 123064079252806230), (2286986870391231, 619030843333612710), (36028839977165053, 4166509660130487670), (69257542967, 15762737725149210510), (281475248456119, 864861849969121290), (563105110429727, 291126204288540390), (4503599768020031, 412877599024901010), (2233651483839, 5381585336684386830), (144115188077758303, 4508434277767406910), (9071777416503, 5407272279738627870), (6783273015, 10270496142519459990), (70515611927603, 158183127117812082), (274879624563, 968067335404354614), (288231475797611823, 1054693668503592390), (140738126547303, 6405797081194160910), (17594474054459, 3409066734504372942), (2203320427935, 8242855390898946510), (288231476737087359, 2725286463288258870), (77980770607, 47732086081295070), (1152922698607821587, 427820872099926822), (576460769550717299, 9899795995833871842), (8796161459639, 265577010227104290), (38856053231, 8910318678123519930), (299085417419167, 2556714334841013270), (17627083359503, 5429906518115604630), (4644337116286457, 3449959313577310534), (1152930300970419133, 2804198186098098790), (9223407238408046021, 103869836702895490), (4408785027502, 377250773719814085), (2305983749533205639, 13508609539003755510), (4508050824365063, 926090738972179890), (36319068692940103, 3267300592587728670), (20268603505411085, 2323222516178805430), (90071995768669311, 964722120960127530), (360569445220877591, 3236179305894814290), (297237579840099343, 1512779308741907430), (6616674206731, 571046925573598866), (288300744930760039, 5595877206340939830), (1168500721054, 213430750487443335), (3458768911884619791, 62920977404582010), (21649162342, 321273945014118135), (447750472511, 637816492494551370), (1126314908058231, 198570142366368630), (9075819807355, 9601776106447186662), (145117942680944695, 9990638162357977410), (562951774011455, 6485728889175045510), (4906673993043444787, 1249788471375669654), (9583703987576635443, 78655181231572374), (5068749141182078, 17354747350399514055), (1153097705707278347, 50962624462501374), (34577847007, 143207591519890590), (4638707617332994079, 1826942799835592670), (9295429638480203789, 4678487426184105730), (2273790180495987, 884453908539045702), (884016072884423, 284754199821876390), (70403775071213, 4455981549980568790), (4620693287492714547, 535654617239878422), (2342997707372625935, 442331455216190190), (1152926074477740087, 3498337748278774830), (36063981550439183, 250553916768668730), (29278620274917383, 247567525765930830), (589339461419023, 200039443424215710), (191403018539769867, 113100126149914554), (585503273388113939, 61325253609479178), (11259548843376991, 4812603594590176770), (144678275497590943, 318124994190920070), (34385187759, 5822872590479847630), (162411095939088726, 1060708388133392295), (5188709720751475919, 9656783000667303690), (1152921504675107263, 3580098927331216290), (8797238108406, 330864742955310135), (1170936212354011979, 1898002365291382098), (5188147183056195911, 6131270565334562790), (9232379511140518043, 3471606441114412062), (291049835350458395, 4419297201853037658), (1188950576504046507, 339983270317381782), (39874610597947, 24919661888054934), (4611827031062415527, 1350619308143857830), (75041744101597, 659813547126288170), (9295570935316744719, 108359981026709370), (74450681096851595, 278425246772074962), (13844065805366726923, 1397198452348985034), (5225302017412501767, 1526467025327372790), (141321621754923, 1345422105866209098), (161354409312303, 6610840799572575930), (4647750704193077455, 4579193476507294470), (9148487035850515, 3259780294838938662), (288231064554504475, 66546129137139498), (360288524240688909, 7021710931426502290), (4611703610653286515, 25120936394519394), (9511655189565675813, 1118250471328011190), (4620693217778860173, 506775485779782590), (1152921779493278662, 33995874737317335), (2387189414938804263, 27691305103994610), (290550247133323, 10759989791477520258), (2326689749709881551, 5562160850987508810), (9295993130737270955, 15845251893528326178), (577032507009138781, 11216250731013779990), (3412952981962783, 3431237450869473630), (1127136858524425, 427118849210545478), (141459181273338, 8179659821622992703), (9007199399457078, 16424117446057035), (171171970214298893, 726975446476579510), (2886807365443911991, 1491590378454818070), (3170569322041187463, 8150865349125053670), (2341871815930413213, 142713789665541710), (2306071708169150751, 701145062139616710), (7496241580026643495, 374163029619177630), (2341871806274742555, 714339352027096026), (73238469542936718, 86063838654388665), (36029149508337708, 283268284429117715), (2269394147501227, 268586683427341734), (596726953042519146, 1524673512717972981), (138751770745, 65091576240552862), (2260742003294604, 6896911941001063835), (19327464624, 9063357061414513), (36169560814256414, 244300719837851985), (864831865960538759, 80182353258130710), (288230376961477090, 203392200515562903), (2310487896102281319, 5047358470769496570), (4611687676318320996, 125506298619071305), (2207613657957, 384535631009246470), (2305843014585050258, 1123240868545750251), (1157460289747683870, 15622033151381269305), (14412644707525987350, 119489499309837855), (2449975793770702876, 80072695543193045), (9223372062658270381, 872073742330398790), (6757609210118748, 3206839835126530295), (9227880043168923711, 585428740333527090), (144414332682240569, 1642939895154319762), (288371117952229476, 7492213812923925865), (1197436883173613, 29645435489516210), (9223383036807087166, 6497711225224003785), (1177626411250, 393354616237814517), (288300745734881499, 661855027996514814), (1374934804055, 65197202428468770), (17592802626161, 4153005705744543362), (18049894266706065, 107130412316382466), (82516148641333304, 137294216364908603), (4398474350177, 13288835544786942218), (1132496977684937, 4573167988914592018), (4611765191856633898, 2444762721753853683), (141801784977, 11705701217194483862), (36591747377206816, 1568799745290339887), (4521604147085623, 655571517144819990), (288230792763638038, 12258690298702485), (11538222868093468795, 8689650368634857622), (4947831694865, 20135857626022358), (4611686018469643411, 17904307020630294), (3271971200, 560965191952880357), (288388705827424941, 1104188542297457890), (308637316392419452, 4732308018558114995), (4507997758394901, 13354269565551923030), (4400198232821, 2345661621584657090), (4398057098584, 145013771208325943), (17867065531331, 334371376898768694), (576460753417025611, 1100750386068698106), (18032007909036155, 8844534233103775206), (576460752354064427, 348174354678650682), (144115188193380906, 222132376116260337), (280281359168, 637173989762603473), (1152921513201022565, 606121201528196510), (281475123519042, 12479384977848519), (1152940196304883770, 257423129377817403), (176488796670183, 17791614956975894970), (18014965447276607, 1025184319095766830), (81346860974868038, 12758205157636614945), (1132497047946630, 741640502831438055), (54043745286427837, 13174899373534168270), (1407787202511471, 153081430308307410), (4566691885, 8427922942323430), (72198617143705727, 7356835664614125690), (26390437040461, 39298012177529770), (144132782411614495, 66252958908427830), (2252074694518798, 132803635229569185), (45044809563375505, 1591507139414938922), (144115189158531271, 4060942674500490), (2341871806501632228, 816729290123786845), (4521191819937984, 709660144046868533), (2308253138718557638, 1030840934602671165), (283676152185809, 7065795499940292874), (54641329853959525, 179581236757116610), (4683778865623998673, 81203410121445106), (35184992953409, 31840320201706598), (317761075024609, 1089427189096541282), (9323867206074561, 353480882262182918), (316659420250443, 18182265345932898), (10168283806327232, 1580825675718386491), (10376575016472053915, 2118834621860302038), (9224216599760741018, 1629745575865331001), (9367488324576486296, 67733747459179879), (71202802433, 40470903190102922), (578149603237430513, 5452952235120962), (79169671140291, 2639546575139948622), (18084906848502930, 94143768316590201), (2757973004487, 945933569646108990), (144115196735134785, 29895404484676694), (1153266621440, 12156405912033820067), (94492437040, 123724266421234193), (36029075134914913, 1642152179544566066), (103484264641, 2054381112641936654), (76561198002473379, 6746116496209984218), (9227963597429278144, 4245410938187686711), (9007272808682634, 1735306808638291287), (39327111489, 1451275060876968218), (567351221234499, 4647207487179684678), (44033640475, 1408267595852141178), (577023703364225411, 222050204757437106), (4611686028158838913, 146162539947355774), (562984591851788, 4970003513197056635), (2596338379318689855, 1266902842232317290), (8796680259127, 43673873722611990), (72068606334153763, 352155967969803738), (2199209955718, 10034894989919729805), (36558829003963, 6244586476165771734), (10995150277145, 5935483003592365762), (2270217170355793, 2739127880214446842), (275033756942, 1912497802649724885), (8830729921166, 2780269713077035935), (69326651557, 64838946942872570), (2594117366367405083, 237103380321102834), (35184926811398, 3441701623573965), (864697729819906202, 3515959836576659703), (4432943263255, 93834469773995610), (2305843026403022619, 5221291900792640442), (83316593240606499, 147592972738297866), (9223372040077248027, 564601177694543682), (4964984899086, 7228530855524895105), (9223372878670999603, 11358847577910418014), (2305843010290548841, 8252957518912227394), (2594073936196083993, 1169739344321118802), (4611703611202241152, 10134091716463011631), (2251945845772822, 15261238637151566235), (70369858340889, 17884106806005047762), (141424683130414, 11706214952510715), (72057770141075712, 12492620673619176553), (576496228738564386, 400803403726296363), (2377902940787644459, 14431784516495253726), (2305851822520281178, 324334753711853577), (2674012681537657, 10838856097910026186), (1125977772048916, 17493715432981068545), (11201341978624, 17220354780228220993), (9007208650670113, 2564666295865934), (9223583160401529043, 11225243496107200494), (893438280002, 11125505450669592831), (288230427691402234, 11180894324698515417), (9367561991721343765, 17768364725050673030), (1376008691749, 611901015640978310), (276489257032, 3425181978183049), (369295178034973733, 1678864031460778370), (144115756085428531, 50193583217322402), (10134765608919570, 521907209721486633), (630503965280193170, 9753782764982288307), (4591577737617468, 920984291383371215), (144396665503096865, 7240673743666402), (11263397182048911, 5052599002928190), (1101139027579, 983488591013710782), (4611967511674520107, 107347631458312518), (2258397957204547, 4938350528852214), (4611690417572807547, 4378217048449522278), (2533275906081679, 164830504972393470), (2310346618506971663, 1353565034693433030), (281476210885133, 3946335413641810), (18019354901897728, 4220088322043261), (9007199313592604, 118215721373365), (4755801481515910177, 3998518996531046), (1152921504741590016, 66648481), (144115188483302401, 2929733818993766), (284258250326070, 1031926860498797835), (4503618016248215, 5136993859569330), (562984450591745, 2887962728002046), (288793326309608448, 4624338567326657), (4415243190378, 679014123879), (175939042457602, 5417793650112243), (1407374883562542, 96237554595), (4503636134728993, 221025231987898), (217298682020631570, 712421442381), (2307109647146553881, 1498451099684733502), (2310347708621165058, 260461280169393), (6755433800798339, 40651876626), (2305843044647314698, 220676152690119), (70437480440873, 779570469314), (554118447618, 799203479343), (1236950581334, 81841485), (70506183417878, 768413736915), (2251937252638869, 81420130), (2884555561406305292, 8024401814690065), (1649535909958, 45618571545), (9007199254744352, 86081203), (9511602413006487623, 43934970), (98306, 9381), (288230376151711809, 9418), (8421377, 9434), (786433, 9514), (262192, 9581), (562949953429504, 9847)]; pub const PAT_100_000: &'static [(u64, u64)] = &[(11184810, 386247406926641169), (22369621, 5969148070898009030), (2932019822592, 17137951938138366611), (1466009911296, 13249978329312826369), (1121501860331520, 3534749459194562711), (287104476244869120, 16597972042436927953), (18158513697557839872, 616224426563831), (72568035910639, 5579854270426638930), (35185043185147, 5048684809139253282), (292133544383, 8624024832171258510), (1236956882415, 5172124541284900290), (536951775, 216433671955940670), (140742858410387, 1073321379497149134), (580546438631807, 246954141802758390), (4503876656958703, 442600080955335030), (34393507263, 1049485611277333230), (77310576703, 260147770464191610), (1081214783, 2302525558771207770), (4899916394785734799, 1336795597936646610), (1141120447, 540878591708645190), (17592253228927, 543395076871737090), (4611967493408686719, 349984825048368510), (17190532191, 7269155819443811370), (269133695, 11356664295692786070), (144115188126242383, 870257732931310710), (1152930301807690429, 274354990454274730), (1636053119, 7470940436512482930), (4398049171295, 1890283583302382730), (36654551215, 2360796611211841530), (2305843009281033959, 651912611032722390), (17382256247, 12504496688264299290), (339173383, 946581236895763110), (578712552217813791, 2453267798432591910), (18014407250438239, 1088760545175887430), (68730504767, 99446151512337630), (562958579032911, 1222247369374569510), (1082481959, 885845773732113870), (36029346779001759, 9160549567013231310), (1073789919, 218511331323749310), (288230380472510615, 14154286478216571390), (1125900330550303, 4344497649554663370), (18389213279, 986626550617967490), (4451206015, 2933642030046417690), (17200925919, 2846845410788579970), (51594463, 2798155649709440790), (2688853151, 255254985989556630), (1102196037023, 8468674974359312790), (9223372041162361167, 50678377357368390), (40953935, 684008566533725370), (72057596187444103, 16744112121052443990), (12890170255, 620585126991568410), (9007233750934871, 3361338264826937670), (9815375, 162843772408474710), (311385149919, 109241779752430710), (4299518111, 163471190317320270), (5379232223, 4561875731238378630), (69236543, 418656025514396670), (1108638495023, 775287528094516710), (135474647, 3399105593335122330), (68221343, 1233335594551975530), (188757119, 2427578250372985710), (274882942479, 1271347535983667730), (37350305799, 5077197709882717530), (104967263, 5229466037725570410), (34361014431, 5338252710113148210), (285590239, 2252741056578919830), (6372959, 890905878728016690), (137640414974, 17677779660942105705), (68761800971, 550392564073346274), (2688815995, 229851093435265302), (347095407, 289095241380246210), (17197003087, 388714766910867390), (138010765575, 589327037692440690), (8835087476003, 8897115461080113462), (570815758, 14833085510234752005), (2252845619223, 2086023730836686190), (36028797556591711, 18129030353838782070), (18245625186309, 212244358905165410), (13331579150699, 238893492728385222), (2252074961119311, 95604425371104510), (141741307917, 2586807797163324910), (2429553791, 4508752791557144130), (2251817009807461, 238041589847546290), (70935699800363, 1795787106965174778), (1153343717072970211, 26057541163744974), (9241667979086675979, 3543649595980683798), (176196743618655, 3563711823120873270), (1152921513332212799, 924763338642973830), (8901323407375, 2422315215545147790), (180594786452493, 748249746671604730), (552185365863, 6297061199580862230), (580542140918075, 2958097945833984954), (351849109520655, 2251652763507174510), (2287052910886987, 132024469702780074), (2305843023173419507, 17475237412804719834), (4855477847458119, 13255162145213563230), (2450521492989018123, 11680509804924852318), (4573972684410911, 275652863088355830), (163344048415, 2831401385887787790), (4648769657503947, 11004377326635689346), (633322994141655, 3112187370122350410), (18299180628836359, 55811183977997970), (288373312681149647, 166472044109952630), (4503892760070443, 1575790220976667878), (2450522317622607883, 205243079913767406), (4611756387181037883, 114005145997184442), (18014400943555627, 1738627970732042754), (569549176061995, 9836486681526761802), (2212177907739, 34806786978004734), (565152467388691, 308185305577861206), (162129766977110023, 41224269847756290), (563031563043267, 184906876906946814), (35253247804527, 2826717811917147330), (17592321386966, 177055473793500555), (3300695213167, 3022171219900087710), (70369973110638, 11076151338746895765), (22553251229598027, 141508210075973706), (288511857596039535, 10399168959405787470), (18015025641817199, 143781882718773390), (1127001566249339, 45560974565688582), (288265629377511899, 149377940486151762), (178123301716303, 743973474125142870), (36028799168286941, 122000092487056630), (633327692284685, 288930892255496330), (103079876030, 856282577158893885), (577621836850942309, 8485422566090250430), (4504712359460943, 1547516319654778410), (18296975414789263, 1346378769294510630), (9232661810866423947, 622692947551811262), (4538792857897446, 2297894695462306785), (72057868918015389, 102654872516370790), (32160731955227, 573973875677677398), (1172062080048695447, 5246411443279146690), (9223375339697471511, 225459948587708010), (1447404000363, 356512444694445858), (396317866729152543, 2201758184347761270), (72060892574927475, 506459551745624334), (10412332234152353839, 9668992878337875810), (9223382207337359411, 115117811749342974), (10138596728115911, 2050272936409125630), (19141947952212027, 1931390913684710478), (9511612308611183715, 11430991396537625406), (216174433528726627, 571340586777096786), (9243078583759409731, 16757087906859688758), (1585303365603033099, 605238101984652486), (144397762566341873, 6205535253411937586), (20268672232720615, 770167043031133410), (40534600031676703, 13684191820462614990), (9009673158166679, 449542574365901610), (2324141083876917271, 876991925762973570), (731837138539118643, 5334247726078403418), (2749116719199, 46896976998099690), (1233988499070288471, 3906600814595015790), (33779745984610323, 514476100201265598), (9260528932803971699, 3293187055120667562), (288250167361169531, 4599987927885916566), (2310353205910851269, 12327028529648948690), (36033747036569626, 6217556957866020921), (4611690420804653151, 6295284589727518770), (288247987935658030, 588420314542497255), (25820146361, 356106604502743094), (1152921611981113658, 6513559193385737493), (19281035914510447, 16455950802518051370), (4764808405791936603, 2775761533269155046), (18025427985899806, 6328909244928308115), (9250393910033915979, 709020269251904274), (10414574677409886, 6671440745071378815), (288512469670985821, 7444472974783596290), (4684306562427195495, 26993894190950310), (2305843284636967022, 1535431518094217835), (585467951592773211, 150542360222556918), (9043483151335769, 14121995813969729378), (141837135323230, 15531589537259565), (164398978736324663, 9782596668476744970), (18014557428523317, 7327584660969477190), (4647750008408904477, 3339033414457692490), (9223376435442488021, 1435678475529077230), (141978801017557, 3878647862988932770), (562954785593678, 872796396611848695), (2287019121180731, 2982730549091915622), (75435293759529578, 297443745981429411), (34645041401, 123100580276736062), (9223374313724838012, 838577512266308815), (720575957664006394, 9502905807779803419), (580981944670488607, 12498372677426790), (5206196355759868203, 268549528103799306), (1803553073, 325870202157651866), (576461373328851188, 2693036321453391485), (2251799831387686, 1789008918196139835), (2305900183852155068, 1411803159332550985), (4503600701433529, 7511300124619004714), (9072111796727, 631539086066000970), (72057868993446301, 514509139615949170), (9367522409303393431, 663587249442178710), (576460889745539992, 12114678511206887), (14055734437031706654, 172428626514983685), (1191202101531771164, 140064351913403995), (1776812971524307, 625574751596113902), (91534343537323, 4803959625268566126), (297237576547435836, 197978433180983455), (2370856093801, 215772897808630526), (180215453451288765, 5326069172600266090), (36033512893057150, 1662927504094721865), (36029072056257142, 1587426690408468195), (563018740927519, 2847152592454218510), (36028831580031645, 6870648745384270), (36873222553141423, 486968664220450230), (562950289048283, 30852585913958886), (88510695014975, 2334793532880378570), (703722343106719, 8338721746458547290), (1126518953084063, 6977295512378062410), (554052421271, 40853298129420810), (281561950327031, 2720304493633759890), (18143019271263, 2157480829705261830), (1125900981405813, 6710507188269170), (17592220519289, 4849434958611377134), (18304670250304105, 12215094128601182), (1200668878586270, 2947309148392105035), (1215511178248430, 16793554625069145105), (1693247913072696, 101472792583365203), (51540895380, 12655759983588701485), (4629700419101663664, 191275262859605639), (1126175330145449, 104915877367483546), (9012147093247136, 1475035624864163869), (36029076737107149, 1823861889710752570), (563226441942757, 20717611473709930), (2815300063994269, 1284921630097726390), (149534520903392, 214119616830106741), (9156737400045767, 110985203937774630), (9288691411649255, 122596420104725970), (9079767567434967, 318552749421152730), (9007216443724615, 11862331558905473430), (81205599567612205, 188555278199449070), (36029074056954633, 18653629299270182), (5105529490, 327751216340639619), (36099202303918949, 163427797619565310), (549769252290, 9168840042259944957), (36028799401342593, 2309750240320385678), (81705244160, 4125902999256107273), (72339069119520811, 58180009024970742), (281646776992305, 11288429023808794), (18296148431291105, 677698327991907274), (2306124486438554155, 53102593997696334), (285891285257504, 1327240716399096811), (2533549804689536, 130239371465148571), (142936522772864, 1035027457920132557), (17731822821120, 1292680932349298593), (9799833338930889263, 363055543598182890), (648527142434964845, 674071728838064830), (36029071902245300, 5072131282591945), (4467340657187, 160057952659031466), (144116288129126785, 2883408824959784414), (288793327317336210, 111743459011283847), (4611727799869768315, 444011266158313854), (1157427304331351319, 922577662810944690), (3476781111354589273, 49389321404204474), (148636380157806887, 1455462786828153090), (70506453834771, 2971806742521394338), (288234774550563425, 1284305795911142966), (5501937043204, 12051668687658439705), (9223407238475948303, 15584024997927330), (2287551123030379, 1356544228059952386), (576495937849925662, 3669206511636435), (10952754293766947343, 3085875925274701230), (576744443483784735, 253645429301618970), (576461585528652903, 1202098694535542310), (1152930326469812751, 18070093362153630), (1152921504934101190, 407490708755584065), (9223383032004691595, 2182881194042590398), (9583660032847773917, 12056135712011528830), (18016597692203586, 176228141170672509), (141322678183553, 77161689299045038), (584168247349, 79421474673116290), (4901042311675253329, 8529560570244035146), (364791845768664512, 3596211228030792923), (576460760953282577, 6742887662418162442), (563499754619392, 211490852351898209), (35051886851, 8533035095988838278), (303602782454363, 1594716858786383178), (9051180122525185, 351547207045553702), (41781593015815, 6225972262915547910), (1109193241602, 11471739821898811671), (9367487225018189186, 14012361226582239327), (5188709789471868097, 467018545353705794), (6917564349452223297, 206908965267020222), (6922050228044448577, 632712877563941498), (4611696051605350464, 305189110611827363), (1188950301902964224, 2565932305826563), (2709198798325570, 332591156368142097), (144187756380229120, 2295208755653381), (2324420358079809057, 17689426768014913574), (4552800882857, 16176903103576065214), (1130317280744978, 55998992082298287), (4504295414211238, 18273560568322388745), (2251808538640918, 3802852057418205), (36046458730201223, 10969931603673041070), (288234775540605713, 1663191175938673018), (11064106950755, 11662436413924627578), (11538224444615033634, 716023175985018681), (8869175386166, 8817419730149030715), (69793456312, 3110407021482761), (13835130692038565921, 5092729493272944874), (343664782344, 2935999128921271), (18014411680155149, 12253458183045236570), (9225632634909037312, 3032135442621611), (140740175243779, 15638015120611613874), (74346779394475905, 12632814582567127922), (70388344438818, 4575956395004553), (144678206816388674, 3266855061843831), (288230928092905505, 3922813623838486), (34574209110, 5320065622835460255), (576460770893399040, 466584972067650151), (2392829359920162, 205562335071275013), (52785718764675, 633204107704184934), (4661929839691917, 4297766342480590), (37047533698, 2609168734850757), (52777103700035, 251762422664237946), (162270324610829824, 3911307306265613), (144115742129279751, 1389153394407472530), (292060234375, 6807777738163890), (44117904143034, 1077480067498275441), (1126179352398349, 9023375679283080290), (290412803672935, 7523679417762596790), (244888765059, 978688954426449774), (4899925191885325057, 1802684540294604518), (2594354864637350514, 1466414291814816201), (4611686570903258113, 968831163371967494), (11557757567042, 1038053188501994757), (576465158942237315, 5613421920217086), (39603893724161, 6513674989600778), (92359050272769, 28128899625665002), (2377905001331715590, 1533181710123790215), (9077568269529241, 138799663022363882), (4611686035877825823, 1272205698450892590), (4612248968651342654, 6062875043890665), (288300749191195196, 7309402294562433065), (2256215593787698, 1866264993198610719), (2305913455267550721, 6663660693243874), (105827996815562, 514092152587616547), (2315976108912159876, 9072587911450265), (633323011498117, 1032364624583760830), (4629700416955781339, 196053476853013626), (9241667911416816746, 1126138742208692121), (38353164602228939, 6408661175839141338), (38280734273719627, 716565127301511222), (387028095238473, 13325974499710754), (4611756524745033121, 1413055969023941554), (4629700419361250307, 1669205610164291502), (4611686020893641795, 5024500187706354), (4611686569257049093, 9918896427876130), (4613093394384696577, 5184366700639562), (5800636321126966786, 15817270449572997), (9799903158506392576, 13046803453881949), (72062140261140491, 936779064456252066), (4612248987708205079, 38184878319393630), (208575401219, 4222312906900542), (1152939236379560195, 1159444830233362746), (2305878195800512527, 15288466559622270), (4521194229386243, 11621694586162146), (53191022512399, 1324095770134506390), (292734123955476739, 1949543980629405378), (36037732699084801, 14242155320439458), (73152038919, 2810183268423519570), (52914064754951, 63230871084398130), (1237219183878, 4068697020652335), (1733903465903607827, 3791960566660097634), (72620589101097476, 7801091330326504255), (2204704456835, 1306082293887205158), (2305844109802349071, 613606437028439610), (2305843012437019833, 16801606929561454), (40543391829774467, 2655267838872242478), (144141576657014784, 14542947480215333), (4611688286173287590, 11135203926523505205), (1155173308726200323, 2446553294215458474), (1152961087033935891, 7310320649967522), (1152941296353249549, 12956717696915404370), (20274995498405971, 17092620256867971882), (18014675006492673, 14056056661841374), (1173192100976554020, 17881928495324335), (176338474926338, 3394634201635821477), (704791265215630, 443243405834956335), (2306125584775872851, 122010948603316806), (2308236646027731074, 1435388328407731281), (2305844143354102295, 1626463241811213630), (1108111721511, 499398454771297770), (150633102246915, 35793429930797262), (13547082766057492, 22605664470043435), (252219308757767203, 2868594498094623402), (9259403101885182209, 1376593800638004614), (46161964900134913, 26625344308710506), (36037597420720130, 28135816977357699), (17730971566155, 94807392059952474), (144115394241052674, 1546099690976882781), (5630053719298049, 32380767141930406), (580982012842758144, 1614380764945362311), (2674012413141509, 52189670743119830), (72093328435315423, 1594458858549473070), (9223372054305196117, 1297601787748970), (652010529623041, 25511983246661386), (1127050976493636, 2365898169094663145), (2305913378109554997, 4844327706834920590), (72127963054899369, 5740768303519522), (18084767323555845, 37475347791110090), (71605772746753, 36442825935884954), (71472953565770, 1638818408556281841), (153965988938278, 34332288923860395), (20837944369939587, 37924265222261562), (9898293463178, 41984365478544363), (72066390401779852, 39060447985100885), (4612548035678372035, 2730950648097287118), (72339087838937291, 11986559879244561114), (18295873486230499, 2130304406905506), (319408199696555, 8906837338340513754), (18295874594048131, 11877495347809902), (1548112371974631, 2016200036573970), (36873222486819979, 10726184915100393438), (281621055931543, 9793785873031710), (2315149344359596162, 8740859642899111869), (2955487272960513, 17546001798450002), (1127000493039965, 17288512653483068690), (1271320839442, 38629049308300869), (9241421621347008547, 44350353260482854), (18014417979475020, 46700228000848765), (563035886542851, 23612511774651378), (21110624864305282, 10674659274645597681), (1407478240378916, 3761156378554679585), (4503651167544839, 23662677167141070), (216243151931837347, 4358262091856663874), (35803922188803, 15162619732147434), (288230463124819207, 30611159299251870), (148618857496594471, 53874559330913490), (4503740304394279, 53972152722353190), (36107980110825670, 2652185325221908815), (576495957614526977, 66320833934998774), (10376328725834846773, 6028239838388692210), (316671165204556, 13934403835890203015), (9439544853328347779, 28192623006509994), (9223374255209693185, 26805897658884766), (9230127436329665549, 12363148927359370), (9800114264143382533, 1811482598301730), (9295447223079814350, 59450173784218245), (580966619677802533, 57580164863970190), (4683752408558510529, 32921717102768738), (24189260012999, 5924546989334353290), (1152958892301501969, 6572442750204571042), (1128107661656137, 4215897916198493098), (216183777242645763, 80475991114296462), (143076370685987, 26152305844463682), (81066992387555592, 66492488034648263), (14638898366644483, 18356406880554003918), (1152939097338417029, 5460579914312522390), (4684869514520698982, 26229663592658565), (154248304686793485, 877320815786252810), (292734542715028781, 74805737346084290), (584669251093, 70534133032662970), (148618822080432133, 81245776245107470), (576478344514721303, 16119131745185326110), (149533858219288, 1077349934524633), (22518015318032686, 1417080704415285), (1297054284894048807, 3689436076553953830), (1188967900254441731, 90822416120466918), (18152159187463, 235225357681100910), (4758070598503012453, 696026087476299710), (5908722711177429030, 90203555082554745), (577586659191751205, 2333205547576189910), (141837708821061, 19946490782540930), (2251817547346479, 3323358094355582010), (612489585292870406, 97739048792675415), (72199431092568579, 92674543992330522), (72075192666554958, 3003145834718715), (864691128497537170, 105784407907296063), (72102124376293912, 4027428364226051477), (4503874648412748, 19251495277464205), (44118181417987, 32882864589527286), (1268836447817825, 122119584588571882), (81135166340727055, 59569576155394410), (9011735553901343, 13198587472369975830), (9150135770614815, 131450626770694770), (72092791336864142, 15556953885356777565), (70515050021925, 11400824115012410), (288300762623246373, 54867758889820370), (72066390165571015, 124298242420145190), (4723501965526051, 1837316280771219378), (27523257795607, 7956210292312275510), (288241371268521006, 44101557528751905), (9223376435171037359, 67346963881745730), (8796114273742, 118320813664251765), (140737609997325, 61483502930962910), (212205790303276, 3634015449695084545), (9511602413029303308, 11236839818793986635), (4536647320585, 75418404940675846), (72066394443890824, 19204547754139139), (9007203618718739, 148472207564122794), (81064862014111884, 149325213977310595), (2401372066553897, 161535940758941294), (2308108003456319501, 158573481817818130), (608030081224705, 79053349308265874), (72075736190025989, 146845892467707530), (74309532398403694, 10408799895564987735), (72061992227619140, 169175811963536335), (4683744162221936916, 165669343092243265), (1224979652697133083, 177138281441158422), (288243579149616919, 1055633614871740410), (289357403521089794, 12887941661927787129), (2612122968386961408, 191063033200886129), (72057922636484647, 213832197956429130), (4677522427929, 22174085356036922), (22274070020117, 7735118923042848370), (274911521404, 164942568520785055), (9007485407461935, 484812407225194230), (4525598785930755, 5419565253553330554), (3378253775508746, 67249841631083853), (336451162083351, 253651362457527870), (283742737273373, 41818770358465870), (2535104987139, 240372200895585918), (1152956689516364346, 2085477476883801), (1224979099249414465, 123036275879583866), (288249070066081796, 2238582466027855), (1153202988224872730, 33929923233206847), (11258999372514727, 275647668385406070), (148618789062186183, 1080084202897628190), (288511851438811311, 5084285530208678430), (18155136333419399, 531572034357363390), (297237610040918663, 124032350230018530), (1152921857067057797, 3444675777866674970), (36451010056552614, 44473528720510305), (36310272073336844, 3303373712016665), (285873292247695, 2290693462240470), (297523448700207276, 224404365767241205), (2251800620077453, 14284495474556930), (9224515533277237530, 3141022228956444063), (6922037025317061927, 90957315427401930), (13510798898922982, 13965774695938455), (11400013649281132, 233164159912305895), (3377742703756684, 55972939931699735), (1585267069918643491, 1054970818735457598), (3458782110840529161, 276611805402288622), (17867871621413, 262932685864019210), (1213861374040083, 342641879422249242), (576478654266343493, 141936869819840570), (162147179577214165, 13215659234121659590), (439805557092356, 11263744819396256905), (343602430997, 2082733765846910), (1297036693758805076, 1494289160293655), (153263399705511979, 305157130675756086), (36033195334471802, 43125877237343901), (1152927002169246334, 350731839967914405), (2305847478146042955, 7223245752966792234), (4510196969898589, 1745424446684642570), (1152923773435937420, 7711378061827710095), (142412593758231, 354878011130533770), (10273905589633025, 16254807831098898506), (2306968943549612353, 4001302567168706), (2305845226626879494, 5217016008240105), (1153062379538389019, 31714686393880182), (288230926044962887, 38260465059144630), (432346672354304071, 353604077035665630), (162130849305731204, 171923870228851765), (144115206077948247, 16327557536501805990), (181270297335310346, 1465029077680971663), (432345582229528663, 3223616135146828410), (144116837344436231, 2191446461324370), (148618787770511697, 329823057463931614), (289431042916417637, 34932769855992970), (293859875904036935, 364656619008057210), (292751569208737862, 363612815885681745), (9008573644359183, 3928005431607810), (10445361905985, 1394410659346142), (1266639609925956, 3427912738311085), (4611686233180144139, 397326617324582358), (576742227280334491, 67030277302185582), (70644832216591, 18118113254681844810), (290691976594189, 456644180746493390), (725361015595729284, 9429216916762168195), (23080948929134665, 4199416211992358), (9008041069413663, 6885298984511346630), (9288691562326551, 1341601318644580290), (72057680076898334, 15233883142573202415), (18437298236426242, 4194283235805699), (1125960177025539, 5426277272648761818), (19144733146218497, 435206936127715546), (577587751872914435, 45724613334331458), (1126107281760260, 94577750020389745), (2891328554165871619, 442468936346601522), (18032558738506759, 15568248827967630), (2269395640387593, 459040404248896358), (5206161203889438761, 534690513100775122), (27092104215797791, 24020599262899470), (587719889096016927, 2080355007941412510), (23235774136347, 241889893139622882), (576460906926572575, 2474353775565210), (4620763724003680283, 467578418666474346), (4611687255378043293, 7646657535279070), (38281971624854534, 478943449740514365), (145960173965319, 559418344272837510), (144115215120875527, 675684615285294270), (2305843017806401543, 805565141292630), (18014682013630471, 6184752121749270), (2306406036485054467, 2050959587240742), (2306476337591881734, 909454056177266205), (4611721769740404260, 557567978905060565), (18155145695069338, 13902892222431597), (2315008547814899733, 558359158499379710), (576478636547253646, 84251214701886855), (70643645166619, 565889748002533878), (288300814705924109, 636204625634865070), (9007216569883671, 4533439686567990), (657807020975458407, 12322070994377910090), (1162350925051068417, 7166287931842126), (9016012661861122, 2458772487175659), (88107026231386, 671585830224250557), (216243701284872214, 228278363385412065), (576461044445741203, 379405601664149082), (594483964375204880, 621460777770145511), (19533512312075, 331840798850325786), (50993500, 9689566763657165), (382261527163, 10434190269706281078), (286908118728705, 781717122998406962), (9016081249862157, 787097012952374530), (3025807097860, 902954251285615), (576465296379873821, 73342447571980510), (585467960181725710, 269861608619314215), (18691732865293, 1753475601944710), (581676011888907, 3697431432305898), (324277315650584599, 412280624611336470), (4683753233359833092, 920634866632537555), (94580059074992134, 1216455098793078135), (9296010173200236547, 869003352062326914), (1185511769417, 450914158539451894), (288240272328885017, 886264946312048534), (1116960523022, 852886599154485), (148627927544635395, 884983113483713934), (432345564902857751, 1169097112804294410), (3602897328643506176, 7366946612819663), (17644027642681, 65157921280269818), (9359079751286837, 37067458698217090), (293296926270431418, 309393358146419547), (577023839964594183, 7185878060599410), (576460769506398477, 93165497753144530), (70412773900292, 866664424618535), (148654008716828681, 977057073936717634), (35365432131591, 976208800723036170), (35357588717570, 124931264510423247), (3436007397685, 26612767407893810), (70403273851756, 8279989936491606515), (4503890074665059, 917681505744473418), (140759198073959, 1041428112755913870), (2308165225553068128, 1061038172181597233), (36064261639897091, 4397013113477394), (70781069595174, 383176360509712185), (9570435377397761, 256724163233493638), (9223376469270465806, 161422520162054235), (4611690966229731802, 30273300100712361), (145207014195466, 438290425900165083), (4508034214659864, 146419284230492119), (27026137544663179, 9441037671466758), (145245632062296582, 404494098634730505), (144431916278351437, 220007916228611770), (4611722096689807495, 1195863967622575770), (18331130872727078, 43775042822052945), (9223952579132686515, 107656616395511898), (2270491779893302, 227981999275788615), (1153625209228543050, 59363115672106533), (18014673657208878, 79236790096814805), (2305843146939007246, 278369297480014755), (22517998407475254, 136410995024246085), (2341871807608455831, 1155826139231092890), (140806476351142, 35247537968172465), (4503605269299255, 681731832992483130), (335634918, 1939309020389715), (11271470649357, 1463188435511572630), (2255115730812974, 1267045728389173005), (144150412176528394, 230684430052197471), (299489379523494520, 99986867389405997), (9227913024173506860, 282547678163472085), (2322254658601251, 1376137183736383302), (9223730546499158018, 1375501910851828437), (160820755488774, 317896572756586035), (144818894845020360, 1197692572667140543), (13871086861562152482, 1479639215810589639), (9223372037057431718, 108010716881332395), (9295992580982718627, 755753008383014694), (9223372037099360261, 61783753822404290), (1188959103087546451, 11497422604344006), (54113840358491288, 1467848782218796439), (70991514698725, 1473313910243989970), (9352568115369, 824177255299444774), (35188710047989, 8263165361812790), (1153238176844746923, 8594268729768927114), (108086533328732337, 70816936865207962), (555125582243, 11916246285938046), (576460756749402600, 12695564247381379), (1153343720297398301, 898696399113610790), (9223547958717579581, 16818301585415330), (2955848032714800, 6818308946192029), (578712576813236229, 13456684947438610), (1441160676886450263, 1719053006257158330), (1154065031059771554, 211611013391706123), (3298535946429, 29342436997904030), (9223373136905635228, 173659128735317995), (9511602430213882119, 404705542487149830), (2382404205028845825, 963913680050201486), (577032635791180123, 1935563138194008246), (571816913412955, 204761793962567226), (144126187588812885, 1841826880803953230), (571815848117079, 17315174719430770710), (79714594390738, 628420005248475561), (182395922348785669, 6382724004118970), (5764644908577064024, 16635241050146411), (4900197869572916331, 2129834257789695366), (35186544881817, 70817824635497786), (2341874074009993372, 118102790870472485), (36029916663332877, 2196945050369963810), (72057595648623550, 2036990883937274265), (13510816609386507, 749196244677623694), (11529215048216109225, 5088859289569874), (9570183584826915, 169254363041269662), (40532551284178980, 2198297869613764165), (703833470667124, 11968156879159195), (45036153050501131, 2542874246970801702), (288300747043920217, 2333849171538688342), (306244862716940299, 2373840917081578266), (297519086890455050, 15859253963664951), (19705447401422995, 14681367647528142), (845548089245699, 1288859250773120658), (54608449748598787, 5063768105780830746), (9223372057281037346, 8046550028848071), (2314990948104732743, 264207003770519970), (2310487348611154523, 2664460975112663034), (11529215118009565255, 496109441502547590), (2342436957359210521, 18076202842742322586), (2900458968382062595, 1669405415608683642), (11529215118009434906, 2457057358353842013), (9223372040084848653, 7772846686329130), (864691233816117575, 17900608147813989210), (291372863135750, 4183145751732015), (18014432886309183, 433923832203331470), (68730267734, 17493248594200335), (72057662841302258, 2883716612880138321), (18049583436305446, 537545547732195015), (2396935365469735, 908093265371355570), (6756498969724467, 51684639456296418), (1128416774456625, 2923950471225223154), (6765297201586269, 13058541931843128490), (576496213772230667, 887724250878839934), (1175439522071126282, 419239084051701879), (576619082246407498, 981949935551073153), (4785151913626077, 15413809777300421410), (52776595893310, 243375007967526435), (1125968664070583, 21271371514480230), (582090251971887319, 9537957721006770), (297237816058839257, 1429962720704352758), (18067243820656012, 3257264925787074545), (4612284159262457899, 14120454133245642), (4612248974890762287, 1450007438255651730), (288230498625392779, 431954403392169714), (563090689114223, 12417516937923734910), (11005921069391, 13336190281124486790), (144115194619109407, 306570260326991430), (288230447228780558, 2398035803328435585), (4621258510607319042, 2887115117664688557), (36029074585429607, 13830622475757438390), (7061644243634226445, 3300921686225890510), (144680337081925695, 12810154956588779790), (4612257769582493835, 1626108700073771802), (9223970171189862703, 15165285412234374690), (2306405984962117679, 1735818964574830590), (5070948172571477, 5685782445703361210), (747667974021677, 10774414005618502330), (9042471673671757, 321131781112124990), (35356171972687, 137274810116384010), (11529215338164003079, 563959298193608490), (4785349519876103, 6026683471140630), (9223372312038875399, 1408057436450130), (4611721481976586247, 7931807442668370), (1157425396312965246, 3487629176704918245), (2449958284262654265, 510524184309685546), (578712828077195354, 1240078130153240763), (9224500140081021191, 5520993526848270), (145243291317829932, 96953871532864255), (4611688239198113902, 9763236412887851985), (4652222817956397059, 1747844218040629278), (5764748282030989837, 3486762583303537510), (9403516571982233995, 682776811989375726), (140780605952522, 3621017338584979767), (8831259250831, 261486122603915370), (34503923723, 474861337755126), (5629533903523983, 549729907646667090), (36029381688170522, 26389219003481103), (36310306363807929, 46296889605360394), (9367496296706867855, 3871500280509463770), (558614203839, 1854323261460439770), (36029347052716170, 758518405880907), (36038693177788585, 904693204032685886), (1134705127293079, 983241599361386970), (1157425173121613895, 169202256686936490), (293015588229480455, 33327719458140630), (4521191817283666, 1452238683165221127), (11529215080467136901, 2244597913796960990), (1134696035526069, 298888578085484530), (9225624386457832412, 3985809855740246765), (37168440856805762, 4087893809326702449), (9223653511865582739, 924960223533786), (9224797003958452745, 9434397044621122), (1170936599035379977, 599152741785039554), (9529616948971700927, 5792146676878131570), (4620693810387634317, 647144360069178230), (1152288735412229, 184204283984424530), (2594074630910116993, 32182976482445242), (1441152018738594838, 28810702028591835), (433506923393843208, 26435372554033877), (38562621632283289, 21574222537404614), (1297353626917814797, 4912867299423239870), (5356824945497628, 4700678362886874445), (4611721237427742741, 487986302197145510), (5215168952644141137, 5491203853462854538), (4899916497708647075, 848856060774636018), (4625267220421812448, 9508081134199575161), (180179719231136005, 101509894189245770), (1152921848239907218, 1725491064061594203), (1873532629366622791, 9816866507076249030), (72234615747657735, 2672225949485396310), (176214186737719, 1431839498811094230), (1152956828598944295, 64562486586921570), (306298109565093893, 1167058645936340110), (1152957238735847983, 140262910905190710), (54096247031611918, 6522994692427079895), (594497141053886511, 1434668016827744790), (288236975385761815, 2863071011052658230), (4829724284935, 466469460677113590), (153126785378457639, 1992508119547218390), (3747002036797837335, 1858615979918936370), (2306129157114859711, 2630340520988049870), (162133984766089303, 569332346831931210), (1152925902787629615, 46765093786672170), (11529219721140377631, 1334279163822151470), (54065185761824779, 1104156499869917634), (2594392793493275024, 551855179654352123), (9367487516988475455, 137480621693685270), (9259401383663371643, 6970793157491301138), (3477342412039260755, 1016392246893972366), (2323857957622186077, 6802532698927447790), (1170935905263847549, 3179445954254570), (2359890877666623953, 6091319525320493662), (90073229600751699, 1859964201198304674), (2395916651062132821, 6279007585475352530), (9241387397436973147, 6737191827407262606), (27584547852193907, 3736568816902402338), (18014956923433048, 5683579511153425651), (73325880700569963, 3418875785851845774), (73184593607938066, 525739668799741077), (11259548958724530, 571872077269513449), (9799904394987180051, 155776294727459934), (549891780724, 6646975373380241185), (3458905801333211159, 6788869672705230), (12106239985275897879, 2088940696992244590), (12177735041694040087, 6827652631668710490), (6918092269652281367, 6258350492033970), (2315430752755386935, 2000651113448631930), (2882305135908880918, 56752148928439635), (1155877541886560403, 3022014497807039394), (703687714998323, 61439023994597106), (9232537705638789665, 6018135247966293478), (1224979648551600773, 35398901679460730), (8070468953362661377, 39698289510114934), (10376294230805975648, 6749211647569193647), (36029093372249199, 4304359377859705710), (576466541919863191, 2447649250323640770), (40743799231614981, 4168379706045354890), (578714756509108376, 606776850808716203), (792637932463999046, 116245412561806635), (1729394351571732486, 27873790220177355), (612492847865745444, 1574819427774974485), (1188968993342636104, 7536676751246758031), (562950005984979, 7666433808621819198), (144682537149540503, 15016875559067910), (564049666919455, 3994304045223327990), (5208524019992871, 7984854248576135970), (288230926514192431, 503896844901965970), (9223373724779085831, 27858478605085770), (9223444054866469895, 4794522866070870), (9259401658524566150, 7488935985549808995), (20266203222639659, 117700943686046994), (36596145086533691, 20715210752522286), (288230376221638718, 8647879250325315), (5438587087, 1954773589934128530), (720580340640909469, 7542614250481825130), (144190230012891659, 9927941913521394), (9223514286712684834, 2842963850659430901), (9225624112150360243, 4152251306430743802), (9259402758019621903, 8406970735315868310), (9223381253855379735, 8199955606117673310), (9228159104323715075, 4392842843888938878), (9511602692181469287, 1642434260789738910), (9799974935395827917, 1988925810794354390), (1152921504726520945, 8504214379960770614), (153122387365726042, 2891305777275019797), (21992466024507, 864557716239863646), (576460891894320310, 1559776706713558905), (8873469694063, 2366639476578694590), (2305851951352415249, 4492202369030266), (22658735785148435, 3168682325453574798), (4644341427487908, 1285111223210165), (562949970258013, 1152366886748770), (4612250067961671780, 9375698932202378945), (72572068710797, 1825012485607914190), (1104479800373, 1805760812072249890), (2308385084398370822, 41339545484267595), (6919781927503268520, 806733490482042851), (36033229561561145, 6803256961795294), (21990392078399, 2737781186598988530), (6631967442481, 520371827056320382), (54045394560623319, 10275399542926639770), (18049789057302606, 16089470802460335), (576531675098522685, 1143798459765791830), (2305843163841435732, 63780370861838455), (11038066008365, 1643762403250661330), (24223632506894, 1591547891070547095), (4899938384845243192, 11436019645126379303), (288232713687683869, 1027183283534433410), (900728721567654702, 10982075777420929545), (17592215442986, 75281475840873393), (1152939097871356187, 18178016447201226), (81091181571888140, 327409159172912005), (9223723884895831061, 3184060111797191110), (108235941834949657, 11134904266605366478), (72198882372653334, 1054266017416268415), (576461310684890225, 479451131995758494), (576542137672270353, 2724416784160093682), (585749426702704677, 2409331648503333710), (1152925919967977834, 280838120328079041), (1729386689318101515, 622586963560818606), (36879819555774478, 12780301455629094765), (9022592421863695, 1761028912779689910), (144260392338596680, 550476053283218741), (72374803167708371, 11993535069231099714), (7146826826523, 484206440203215114), (2199025944274, 573973947645351), (289505809652654150, 13724749677273569745), (572296081703954, 425614556381800467), (1161935300936335631, 4683068104749564390), (1154058949923209223, 5083446533143805070), (8804818420811, 16692465962175402), (147884318393135, 13505301508097170590), (4616191817079326990, 5852622531097335), (72482005534916654, 942881020442919285), (1128098937209397, 2891230628295651070), (9295711108037881924, 3001448434820654215), (648518380708439115, 5199863606831956398), (1133046732652877, 7275225849270806210), (2882303873187316794, 1843763555784351201), (1196268685789455, 209429169085314570), (1125899908849983, 7769074051437128430), (289497048980423381, 15072673662819933710), (1143837838311719, 5321526482640482790), (1196303061254286, 469090930510917435), (288371113658294303, 177567835042731210), (1441925937514946594, 16166718828980317767), (1153009534259822731, 518462616390149802), (1152991881957748894, 31148943631994265), (1730613718657794058, 16280842820859257361), (1161999081200168979, 1348051721879468166), (3458839289201689622, 168689738675409765), (1171006271864716354, 131360869008108633), (1162562023633979649, 54158201215466534), (4611686019234439227, 16363794383061102978), (2596327384740462603, 4377803920913243058), (68724889403, 15658963862373049218), (2199297163547, 242288919474289842), (34360955881, 57291357518500378), (9007208117340755, 20140097122415094), (622059768327963683, 16998438741150846642), (1166432304566899275, 153193055805764058), (297801075388481555, 5317277260777957794), (9571250871566511, 18144949008447558570), (27021597768440014, 12946733168642385), (1442840730639794590, 16996944479627191695), (4611688217992323171, 5850509436213108342), (1125909033967791, 1362330245327739870), (1134408344749, 220120984066195030), (2814839961945145, 772901209578439942), (4909627281279812651, 1531315365471254454), (288793635342797299, 17730700667778204678), (6054597152150650883, 17428699625376008274), (865254078479926321, 79710700730641838), (613193237032632852, 34774866283631815), (4684447299909287959, 343795282659514290), (72620612712999175, 49486391663800830), (1226667949580943367, 72133033666380990), (1229769687988961283, 10056170395982101746), (4974225797023531018, 5997395137248759993), (2305843026955600813, 491150850413103790), (362539773226650017, 9839852013926176034), (302795456906, 278589260073873), (2251809746063917, 33338109579218990), (2341872082721186115, 18630240778755834), (1156304701889710231, 10374663347979671730), (1154047409882927144, 303913675171561), (18033227646664895, 3171634522131105030), (2252907921574169, 270830184984341906), (634456864229389, 1645579693258953830), (72621643503075612, 305321396479715), (2269454008320007, 6909904739053932510), (72075186771657010, 1642199781948383229), (36029949143941443, 315575823299466), (1193740874861781001, 10643187036362721218), (299084747377939, 10689340420389869502), (17600845712196, 33185638258162315), (53821440658, 349795052709729), (9224216478965170303, 5025935239120485690), (27303231654723771, 5559888354336890574), (4612037882012762117, 21729888516902710), (326515372373180566, 8803682768667940395), (18014557423273163, 359617708916718), (27030406742150349, 6148419644357706310), (4613234285418119219, 75454679268142746), (4611827855427469649, 329627615613626), (4611826755983246144, 326783301567119), (334392280922227759, 2656318645893933930), (1161933107276809322, 33961829287036287), (16146249089053360128, 350465092256183), (571751012632645, 28090279477296310), (2311473608364392770, 2982828733017751707), (2268900622679, 311714071066098690), (10995118378821, 358922883709310), (2199073923557, 291098966464629310), (2207663818073, 1633790353664720482), (2305845212599064939, 12845021560567796418), (2199661122000, 2818054133259873233), (1134696084047927, 253239750843964170), (279374364716, 370915636430885), (281492166543057, 99670866984387094), (563088492859443, 7461753569618694918), (328762789987401756, 16299945501467740805), (281475264317595, 218675009249917374), (429513773692, 2666685127144153115), (284241271193742, 23721569839956135), (324329541915953671, 89977834587251370), (324259336379434050, 388826683070883), (4612249106893507321, 1009791011608052674), (54043206266393111, 34286970276722130), (37295580443579441, 7990774400525524894), (288511858109317319, 6404436418380177630), (282024776835277, 1816578846537984410), (297519054680236233, 33214370036973482), (72339077605657293, 796694743008451490), (4785212177515249, 171259881000363298), (351854996230372, 6192919684271112715), (2305843011367993595, 34664927688328938), (290273485916502, 100050252306137265), (2305845208270545659, 686748536012753214), (8796295400222, 4425992908318905), (1225542058329505799, 67516441933118610), (11012331276342, 216248824561356015), (2251799885611455, 5953004586584625570), (144678688930140207, 1304717291456945730), (2306969459157369007, 493265214220366770), (1225122035161104943, 1433571107291769810), (144115189221498927, 144687093282980430), (2322168562096751, 452928308427097230), (2252091943297069, 141248600731955990), (10133099631354138, 16050383523761433), (175926162227244, 1287814870616365), (1126037379540547, 2298247417789146006), (74309977967461391, 38824412467518930), (164382554630422663, 946844207234469930), (1227230898727158198, 124550837057968035), (577595448655612059, 4469431725424129926), (1143502108886051, 2133695404459703526), (618617925959, 251401417580404590), (216173366237758151, 2524249462725246090), (144115738175606926, 3831738653396955), (144115188377875210, 3462680820878853), (2449966993651275929, 496770071593095454), (72058143794051658, 111601313427349641), (144118005910012430, 2687179344355880535), (17592531125289, 253515068780681162), (144115222738175202, 736941974183651847), (9223935089888498788, 9174428689666977035), (2305843009482726030, 11741699388681255), (18014398543761328, 13787120860761325649), (2353015139, 5814494046189894), (18049582886378025, 6691561550962417402), (9243638304031638865, 85572845874856714), (1297037244586067246, 99803855341762845), (144185556821183799, 1477239914562258990), (216172852981891605, 1091777006014601170), (246294631157775, 16520512056867143430), (576478346655830919, 866218018880338590), (70371832500255, 16874696458414292190), (9369740195122910230, 15551814043667199705), (72075204076052509, 13614479685982934990), (4683743716351950859, 3760507301307615642), (72127997276454947, 292344347192118), (72620578351678725, 277820699115070), (580542144258316, 542943323687065), (1152921547103535117, 7697406266045719370), (594765421899677703, 616865385495390), (5188252461302826051, 8511366453449175102), (576478894262127011, 69122614859165946), (1733885856554485027, 6099829226123646), (576460772184490006, 585261582916065), (9223547969452706961, 7108797378013480622), (687330036848, 614170174204873), (9385501697530658828, 10961164162045600405), (9367504825725493781, 2425876405619161330), (17592214364853, 332302807421200330), (549851496753, 390988237263443534), (4611686293399667091, 103873861325567058), (19928667136023, 631994976795270), (10376293541551804447, 546080670024284010), (1152939096811774261, 604204306358510), (15185494075, 577394246645362146), (9279914040, 605909528713489), (4611686027026768429, 314610989244370), (8637186474, 53287240268476851), (9223389637702148149, 12413981537331435490), (158330211491949, 558583376053547390), (13837309861538300679, 8194748263288410), (9223372049743938193, 351560553962882), (288230651299175361, 14195200876517882498), (1152939097673826350, 524140019895122085), (13835128432624803949, 10112874809181568970), (1152923703730858130, 1474046550991204509), (2326600968306747, 725026851470922), (9009434789448233, 772014773545942654), (4538820510911017, 814973399759852606), (105606807584826, 1634855366534767377), (73188166902744481, 71120678627295518), (17730163973140, 741428591267045), (432345841806606347, 756025240294758), (3276800029, 760430981041270), (144678689951645707, 1629116471070901218), (1152991892695155435, 578217660365519538), (70371987426829, 4803851950874245010), (4620693224141529112, 1435954170799170869), (148653984964938245, 15649877424004369030), (1161085492136469, 450598618313804510), (140806212136587, 10371540123523837482), (4611686018448386819, 739662028146978), (9224533125432875785, 2322776889567313942), (4611826755970271794, 25625447195463687), (2305843017837593233, 9578126525674366), (2305878203534753820, 11618446145618835215), (10952754294302048454, 825952751605005), (1729382257455661270, 2600024899746945), (1730508157362503922, 1575095084266699281), (1162214577019031789, 3971283857863850710), (2097474, 92667), (288230384817545339, 6333286623563481582), (1126458254885945, 98867039409940802), (145241100935102555, 3975514471179734406), (1688858450334773, 822276022872590), (9932277850, 903885353353059), (144678138029813965, 175636994390270), (1125901249594482, 128969234944403997), (2815849278932170, 7413986174367423), (2598576989287754955, 1792952092283073582), (2305843146927407819, 711725598989383314), (2306969046563758280, 5297979429510257), (9655088580682, 878605387640043), (2252349569566734, 9477352605), (144680887077439502, 3563979161145064305), (144117937124411398, 37474539954105), (402690129, 9478543426), (67371017, 96614), (5070951922401359, 314488312704510), (562949953552392, 97783), (11265, 98642), (2251799813750792, 98707), (288230376151711818, 98889), (4503603922337794, 99051), (8454272, 99769)];