diff --git a/res/07_weird_assembly_machine.data b/res/07_weird_assembly_machine.data new file mode 100644 index 0000000..2970ea4 --- /dev/null +++ b/res/07_weird_assembly_machine.data @@ -0,0 +1,256 @@ +6563504930575804778 +3177554099846544556 +14859870375767071104 +2361978668621667923 +3143167595286206242 +14095566306004759633 +6896557042998150768 +4462024892233517220 +6694476164706603992 +4101034334834323206 +16919437506981809216 +7555882741782405923 +2628576702768829495 +9893623336811473734 +321448934705618219 +10658829649099122152 +2041445642416509779 +10219048753829035159 +16805862748866069158 +10040916278977753989 +6307216144763488332 +7556799640693587259 +10364880594488944589 +4148363280372604554 +10843489283249915473 +10941839320982089921 +12200589183353651648 +13289846021634563271 +9908808602666874083 +11200096838332863267 +8779557412750126267 +8653500638442577520 +5278382863123262139 +5783872159081604742 +8125287062915914468 +2242536959895356377 +4005886220233485538 +16562333581271451717 +1417622956358486028 +17949254327843118224 +11638382071724344512 +1599533962231322857 +3108365940793816305 +4242306746708662266 +4952142584625629079 +8415262979453050616 +17056549971761457216 +3044401595350323209 +9932836459025874446 +17683019803052515221 +2433910229198456491 +11984404922749323692 +5524563739374899072 +18259777400123222730 +4011842113907150331 +13821416711910403019 +6047075845099054027 +15787995709438817819 +15586362769001272194 +9547178878896838664 +7095984364360639673 +11886247752272930995 +9985144182130335662 +13251170938278484486 +4652450378788876572 +1718813027742122072 +663918887826880444 +6670740316248663863 +6700009143044041388 +16923466181555045374 +11387212886131952048 +13965979168082782709 +2422236213071595233 +4699138634002865087 +6493539149331166441 +7518901355855126514 +16145558963603531461 +14786024152105552650 +6994957500730603671 +6969343254888557997 +13840983121869895238 +13660562997364925760 +17265722274403090344 +16718136092983418592 +4687774949942350684 +1375392036798645113 +2003687933393780368 +10165815540082234487 +6089981897628107340 +14541747794483572236 +10203690416684845063 +3215632556062991790 +5425642782789424861 +13599224699425799085 +12514386124935070361 +8663785549291965158 +16808180269220250739 +958315213891692337 +17602667895639479950 +1575696692466204467 +17915906007703271560 +14748722093156428888 +1657002993440401555 +661824732220019475 +4209888120689731341 +16768316015744524190 +4243337273520801682 +2339349826505601295 +3824297886017649294 +12702982826142705690 +16612576840497393302 +14651413872459783243 +1731111914295200492 +7107419468395208292 +13131631592659790069 +7650600002594848965 +10405567400049055611 +8308615406494459745 +3539740125465153737 +5461340322324117263 +3781913427618838536 +15971526239448286573 +14866630059533000065 +9057464874518875466 +12416130366361631938 +16536231451954324990 +16940792417174466635 +5850876492391527467 +8409677954752892479 +14645542356465944448 +222773118531975189 +8843321651534853339 +18155004654525928367 +874144551332925702 +13029240668713846903 +10134094171892588961 +14847849150997407724 +15268365766299545880 +12681437973300849606 +9073037709094073235 +5903235897841107084 +13454671887999382224 +1858835333224639960 +9249476666791031049 +4223733763389771996 +15384221398063151306 +10517318028043688548 +14460943107538037335 +5154513940699923775 +1487808311209105759 +10531814582629388228 +13949079608223777930 +7235144852537941787 +15896454296269928651 +17639234901395308799 +3843116287193798732 +13850621202730186058 +14394021663790134434 +5156903507008819810 +8215065870912194262 +4311375377346268620 +10171989316456362870 +163589086269419441 +3851905914730271938 +15334437853140690383 +15539559255153964902 +16896869453263295473 +5093215075951161381 +11973288268634380358 +5063471141738823749 +14989360565903092894 +14383904172638615636 +16726778109629071291 +8426599513938923802 +10135704539862093112 +10650096844272335586 +11665119603940578625 +16874279119083921534 +5506586508252141218 +12933308300960365793 +5248411009075909495 +2258335812944206660 +8597559794487195679 +7377768646895780754 +3492695033858227458 +10967074645264403701 +4191289746488745512 +10814396656746439511 +7977751296373368968 +7365044695914860944 +719961330644640786 +9787541545720428689 +15604445254264824171 +2390604585013608559 +11986374754145330532 +11017949026101828516 +12566345980261789685 +15356854551478336603 +7512099414187555837 +12750275831668325946 +10214055675311439170 +13443646811679848535 +16700058242611721938 +4423454089307812290 +9103802734880117173 +2844597800879830746 +13843180097957768889 +8451963189055726564 +3487238693652813426 +1299546876649551534 +12113986972185246713 +6519448239293388674 +15121003074094999781 +14734970561277902445 +14188671603580717908 +6990763574012814336 +10826116378520780499 +12743257710490956107 +10544515943049329704 +7398185314804331323 +17207979707505274370 +10312488623848443780 +2525681217825377635 +1209032913852334193 +2466271244689038797 +11480020761807728949 +9382271556984549762 +11547951404763329175 +6098523488344631739 +13976835011142976617 +5952967173673330791 +10742137247908568911 +17711990646608869291 +614357866529740908 +9459271394207301277 +13255507779934222511 +4405075157125241953 +2658215311620786269 +3438348388076752545 +11273337813277990213 +6461206275074180061 +407462859018947407 +16015082222849827426 +15274784353409233905 +10868734442868526034 +15301879674491522395 +15304647555608021557 +1004732939015301729 +14098615156664030434 +11650248670150490593 +15906967279319496936 +531379790791487398 +11796026101712826135 +2668163399826034890 +1114227485540495868 +12046048025420064663 diff --git a/res/07_weird_assembly_machine.sage b/res/07_weird_assembly_machine.sage new file mode 100644 index 0000000..43d20d8 --- /dev/null +++ b/res/07_weird_assembly_machine.sage @@ -0,0 +1,42 @@ +F = GF(2) +R. = PolynomialRing(F) +S. = R.quotient_ring(x^64 + 1) +T. = PolynomialRing(S) +Ti. = T.quotient_ring(X^64 + 1) +Tj. = T.quotient_ring(X^64) + +def num_to_poly(num): + out = 0 + i = 0 + while num != 0: + if num % 2 == 1: + out += xi^i + i += 1 + num //= 2 + return out + +def poly_to_num(poly): + out = 0 + for i in range(0, 64): + if poly[i] == 1: + out |= 1 << i + return out + + +with open("./07_weird_assembly_machine.data") as f: + data = [int(line) for line in f.readlines() if line] + +f = reduce(lambda a, b: a * X + b, [num_to_poly(a) for a in data[:128]]) +g = reduce(lambda a, b: a * X + b, [num_to_poly(a) for a in data[128:]]) + +fg = f(g) +fgi = Ti([fg[i] for i in range(0, fg.degree())]) +fgj = Tj([fg[j] for i in range(0, fg.degree())]) + +print("\n\n======= f(g(x)) =======") +for i in reversed(range(0, 64)): + print(poly_to_num(fgi.lift()[i])) + +print("\n\n======= f(g(x)) =======") +for i in reversed(range(0, 64)): + print(poly_to_num(fgj.lift()[i])) \ No newline at end of file diff --git a/src/bin/07_weird_assembly_machine.rs b/src/bin/07_weird_assembly_machine.rs index 7640946..79de134 100644 --- a/src/bin/07_weird_assembly_machine.rs +++ b/src/bin/07_weird_assembly_machine.rs @@ -1,227 +1,100 @@ #![allow(dead_code)] + +use std::fs::File; +use std::io::{BufRead, BufReader}; +use std::str::FromStr; +use lazy_static::lazy_static; use lib::compute_async; -// https://button.qedaka.de/07_weird_assembly_machine.html?name=Jonah&n=10000000000000070&x=4410539207075887818 -const DATA: &[u64] = &[ - 6563504930575804778, 3177554099846544556, 14859870375767071104, 2361978668621667923, - 3143167595286206242, 14095566306004759633, 6896557042998150768, 4462024892233517220, - 6694476164706603992, 4101034334834323206, 16919437506981809216, 7555882741782405923, - 2628576702768829495, 9893623336811473734, 321448934705618219, 10658829649099122152, - 2041445642416509779, 10219048753829035159, 16805862748866069158, 10040916278977753989, - 6307216144763488332, 7556799640693587259, 10364880594488944589, 4148363280372604554, - 10843489283249915473, 10941839320982089921, 12200589183353651648, 13289846021634563271, - 9908808602666874083, 11200096838332863267, 8779557412750126267, 8653500638442577520, - 5278382863123262139, 5783872159081604742, 8125287062915914468, 2242536959895356377, - 4005886220233485538, 16562333581271451717, 1417622956358486028, 17949254327843118224, - 11638382071724344512, 1599533962231322857, 3108365940793816305, 4242306746708662266, - 4952142584625629079, 8415262979453050616, 17056549971761457216, 3044401595350323209, - 9932836459025874446, 17683019803052515221, 2433910229198456491, 11984404922749323692, - 5524563739374899072, 18259777400123222730, 4011842113907150331, 13821416711910403019, - 6047075845099054027, 15787995709438817819, 15586362769001272194, 9547178878896838664, - 7095984364360639673, 11886247752272930995, 9985144182130335662, 13251170938278484486, - 4652450378788876572, 1718813027742122072, 663918887826880444, 6670740316248663863, - 6700009143044041388, 16923466181555045374, 11387212886131952048, 13965979168082782709, - 2422236213071595233, 4699138634002865087, 6493539149331166441, 7518901355855126514, - 16145558963603531461, 14786024152105552650, 6994957500730603671, 6969343254888557997, - 13840983121869895238, 13660562997364925760, 17265722274403090344, 16718136092983418592, - 4687774949942350684, 1375392036798645113, 2003687933393780368, 10165815540082234487, - 6089981897628107340, 14541747794483572236, 10203690416684845063, 3215632556062991790, - 5425642782789424861, 13599224699425799085, 12514386124935070361, 8663785549291965158, - 16808180269220250739, 958315213891692337, 17602667895639479950, 1575696692466204467, - 17915906007703271560, 14748722093156428888, 1657002993440401555, 661824732220019475, - 4209888120689731341, 16768316015744524190, 4243337273520801682, 2339349826505601295, - 3824297886017649294, 12702982826142705690, 16612576840497393302, 14651413872459783243, - 1731111914295200492, 7107419468395208292, 13131631592659790069, 7650600002594848965, - 10405567400049055611, 8308615406494459745, 3539740125465153737, 5461340322324117263, - 3781913427618838536, 15971526239448286573, 14866630059533000065, 9057464874518875466, - 12416130366361631938, 16536231451954324990, 16940792417174466635, 5850876492391527467, - 8409677954752892479, 14645542356465944448, 222773118531975189, 8843321651534853339, - 18155004654525928367, 874144551332925702, 13029240668713846903, 10134094171892588961, - 14847849150997407724, 15268365766299545880, 12681437973300849606, 9073037709094073235, - 5903235897841107084, 13454671887999382224, 1858835333224639960, 9249476666791031049, - 4223733763389771996, 15384221398063151306, 10517318028043688548, 14460943107538037335, - 5154513940699923775, 1487808311209105759, 10531814582629388228, 13949079608223777930, - 7235144852537941787, 15896454296269928651, 17639234901395308799, 3843116287193798732, - 13850621202730186058, 14394021663790134434, 5156903507008819810, 8215065870912194262, - 4311375377346268620, 10171989316456362870, 163589086269419441, 3851905914730271938, - 15334437853140690383, 15539559255153964902, 16896869453263295473, 5093215075951161381, - 11973288268634380358, 5063471141738823749, 14989360565903092894, 14383904172638615636, - 16726778109629071291, 8426599513938923802, 10135704539862093112, 10650096844272335586, - 11665119603940578625, 16874279119083921534, 5506586508252141218, 12933308300960365793, - 5248411009075909495, 2258335812944206660, 8597559794487195679, 7377768646895780754, - 3492695033858227458, 10967074645264403701, 4191289746488745512, 10814396656746439511, - 7977751296373368968, 7365044695914860944, 719961330644640786, 9787541545720428689, - 15604445254264824171, 2390604585013608559, 11986374754145330532, 11017949026101828516, - 12566345980261789685, 15356854551478336603, 7512099414187555837, 12750275831668325946, - 10214055675311439170, 13443646811679848535, 16700058242611721938, 4423454089307812290, - 9103802734880117173, 2844597800879830746, 13843180097957768889, 8451963189055726564, - 3487238693652813426, 1299546876649551534, 12113986972185246713, 6519448239293388674, - 15121003074094999781, 14734970561277902445, 14188671603580717908, 6990763574012814336, - 10826116378520780499, 12743257710490956107, 10544515943049329704, 7398185314804331323, - 17207979707505274370, 10312488623848443780, 2525681217825377635, 1209032913852334193, - 2466271244689038797, 11480020761807728949, 9382271556984549762, 11547951404763329175, - 6098523488344631739, 13976835011142976617, 5952967173673330791, 10742137247908568911, - 17711990646608869291, 614357866529740908, 9459271394207301277, 13255507779934222511, - 4405075157125241953, 2658215311620786269, 3438348388076752545, 11273337813277990213, - 6461206275074180061, 407462859018947407, 16015082222849827426, 15274784353409233905, - 10868734442868526034, 15301879674491522395, 15304647555608021557, 1004732939015301729, - 14098615156664030434, 11650248670150490593, 15906967279319496936, 531379790791487398, - 11796026101712826135, 2668163399826034890, 1114227485540495868, 12046048025420064663, +lazy_static!( + static ref DATA: Vec = { + let file = File::open("./res/07_weird_assembly_machine.data"); + let lines = BufReader::new(file.unwrap()).lines(); + + let mut data = Vec::new(); + for line in lines { + data.push(u64::from_str(&line.unwrap()).unwrap()); + } + data + }; +); + +const FG_DATA_EVEN: &[u64] = &[ + 0, 0, 0, 0, + 0, 0, 0, 18446744073709551615, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 131072, 18446744073709551615, ]; -const F_DATA_ODD: &[u64] = &[ - 1983433274171152502, 4306149096757034228, 14343520429273361980, 8958880034284534116, - 8603547194786577806, 2972859592172386223, 13957499527926304704, 18175802355555230033, - 9041554160340718905, 8781875577011631289, 12740759996936730793, 36982762481351889, - 14153151992898335474, 4935862324477075532, 7306264470589679036, 17533588483460941893, - 15871150386325366037, 3478268861108230615, 479142766442036494, 7159105042955251045, - 1624086221287676688, 8919795748898340418, 10671829566847605085, 13008024323290385149, - 14049021129695364125, 6780048778243776205, 2651487030051752391, 10722855545904724329, - 14035725187653591614, 2870088686340434062, 15310909505354296866, 12556381622736022, - 11529835006400851656, 6703871419421901239, 9550987712235670634, 775437932064144618, - 14931070884148319338, 2987230423093748765, 383566693419049119, 17309525382419025795, - 11236287710874215373, 18340814078744364919, 1279161511621817187, 1920989508643120885, - 8190686368463715609, 14160173248617445090, 738224523457857238, 16243257164432346178, - 10511018072084198626, 10935888386526855665, 10951084336179899998, 14735018136779508073, - 15907612288190699771, 10243968957660548523, 482804104250219826, 17583492563727572164, - 7464585852479953859, 485394859215598454, 1593433270596013571, 18000026569263060290, - 14858770339459881083, 4722043718580981069, 7028873583468179429, 16634011040379547181, -]; +const FG_DATA_ODD: &[u64] = &[131072, 18446744073709551615]; -const F_DATA_EVEN: &[u64] = &[ - 4652450378788876572, 1718813027742122072, 663918887826880444, 6670740316248663863, - 6700009143044041388, 16923466181555045374, 11387212886131952048, 13965979168082782709, - 2422236213071595233, 4699138634002865087, 6493539149331166441, 7518901355855126514, - 16145558963603531461, 14786024152105552650, 6994957500730603671, 6969343254888557997, - 13840983121869895238, 13660562997364925760, 17265722274403090344, 16718136092983418592, - 4687774949942350684, 1375392036798645113, 2003687933393780368, 10165815540082234487, - 6089981897628107340, 14541747794483572236, 10203690416684845063, 3215632556062991790, - 5425642782789424861, 13599224699425799085, 12514386124935070361, 8663785549291965158, - 16808180269220250739, 958315213891692337, 17602667895639479950, 1575696692466204467, - 17915906007703271560, 14748722093156428888, 1657002993440401555, 661824732220019475, - 4209888120689731341, 16768316015744524190, 4243337273520801682, 2339349826505601295, - 3824297886017649294, 12702982826142705690, 16612576840497393302, 14651413872459783243, - 1731111914295200492, 7107419468395208292, 13131631592659790069, 7650600002594848965, - 10405567400049055611, 8308615406494459745, 3539740125465153737, 5461340322324117263, - 3781913427618838536, 15971526239448286573, 14866630059533000065, 9057464874518875466, - 12416130366361631938, 16536231451954324990, 16940792417174466635, 5850876492391527467 -]; - -const G_DATA_ODD: &[u64] = &[ - 12410528330544508756, 16866623929471404015, 11911839240743312753, 16311567754696617855, - 6167443972059675738, 15654252885237968221, 15893625052572332938, 4346427344699072411, - 4877879602443786926, 7599063822119831887, 5205882822753754388, 4650709573688509009, - 3439542438319165753, 11367809398768370698, 15697070102606971745, 17660823851141944045, - 790555901408282286, 14373045957383048804, 4172730130324824477, 10580693312540310997, - 10831187000660487642, 15625485673361876786, 6251220815425995920, 11570094412152496266, - 17462270586712613320, 7800984058182535552, 7394492557611433175, 6052520958514178935, - 3384539537094122312, 5250220469713550118, 7249675845174927105, 7117552070856836775, - 1868116097780436993, 1331676174817657411, 9255364723391110707, 10751825807113283157, - 9253933195750624372, 1607833087306003215, 13321802884521950102, 15257351979122208618, - 6044969349874479085, 5675576855821817897, 5999636052071649795, 8099973220884922619, - 15348422104481620954, 5769862232404285767, 11753891690213098393, 1134431722125240231, - 17890554632367806108, 17260857268223912753, 10532322140172121280, 6955449057221054224, - 15997800061778221221, 14631080324596192799, 11760495983535321642, 7751431864180074995, - 17568784491445889504, 4152071707666216212, 16639276319169537728, 10469641446888148209, - 14773299592165001119, 4842175923022528858, 471566220542957038, 2375787302702964486, -]; - -const G_DATA_EVEN: &[u64] = &[ - 15604445254264824171, 2390604585013608559, 11986374754145330532, 11017949026101828516, - 12566345980261789685, 15356854551478336603, 7512099414187555837, 12750275831668325946, - 10214055675311439170, 13443646811679848535, 16700058242611721938, 4423454089307812290, - 9103802734880117173, 2844597800879830746, 13843180097957768889, 8451963189055726564, - 3487238693652813426, 1299546876649551534, 12113986972185246713, 6519448239293388674, - 15121003074094999781, 14734970561277902445, 14188671603580717908, 6990763574012814336, - 10826116378520780499, 12743257710490956107, 10544515943049329704, 7398185314804331323, - 17207979707505274370, 10312488623848443780, 2525681217825377635, 1209032913852334193, - 2466271244689038797, 11480020761807728949, 9382271556984549762, 11547951404763329175, - 6098523488344631739, 13976835011142976617, 5952967173673330791, 10742137247908568911, - 17711990646608869291, 614357866529740908, 9459271394207301277, 13255507779934222511, - 4405075157125241953, 2658215311620786269, 3438348388076752545, 11273337813277990213, - 6461206275074180061, 407462859018947407, 16015082222849827426, 15274784353409233905, - 10868734442868526034, 15301879674491522395, 15304647555608021557, 1004732939015301729, - 14098615156664030434, 11650248670150490593, 15906967279319496936, 531379790791487398, - 11796026101712826135, 2668163399826034890, 1114227485540495868, 12046048025420064663, -]; - -const N: u64 = 10000045930000000; -const X: u64 = 16195396392266746892; - -/* -F = GF(2) -R. = PolynomialRing(F) -S. = R.quotient_ring(x^64 + 1) -T. = PolynomialRing(S) -Q. = T.quotient_ring(X^64 + 1) - -def num_to_poly(num): - out = 0 - i = 0 - while num != 0: - if num % 2 == 1: - out += xi^i - i += 1 - num //= 2 - return out - -def poly_to_num(poly): - out = 0 - for i in range(0, 64): - if poly[i] == 1: - out |= 1 << i - return out - - -data = [....] -f = reduce(lambda a, b: a * Xi + b, [num_to_poly(a) for a in data[0:128]]) -g = reduce(lambda a, b: a * Xi + b, [num_to_poly(a) for a in data[128:256]]) - -[poly_to_num(f.lift()[i]) for i in range(0, 64)].reverse() - - */ +const N: u64 = 10000069100000000; +const X: u64 = 12686800874197952081; fn main() { + fn do_something(mut n: u64, x: u64) -> u64 { + if x <= n { + n += 1; + } + x.wrapping_sub(n) + } + compute_async(|tx| { let mut n = N; let mut x = X; - while n % 1_000_000 != 0 { - n += 1; - x = func1(x, n); - } - loop { - for _ in 0..1_000_000 { + n += 1; + x = f(x); + x = do_something(n, x); + for _ in 1..100_000_000 { + x = fg(x); n += 1; - x = func1(x, n); + x = do_something(n, x); } + x = g(x); tx.send((n, x)).unwrap(); } }); } -fn func1(x: u64, mut n: u64) -> u64 { - let x = func2(x, F_DATA_EVEN, F_DATA_ODD); - if x <= n { - n += 1; - } - func2(x.wrapping_sub(n), G_DATA_EVEN, G_DATA_ODD) +fn f(x: u64) -> u64 { + evaluate(x, &DATA[..128], &DATA[..128]) } -fn func2(x: u64, data_even: &[u64], data_odd: &[u64]) -> u64 { +fn g(x: u64) -> u64 { + evaluate(x, &DATA[128..], &DATA[128..]) +} + +fn fg(x: u64) -> u64 { + evaluate(x, FG_DATA_EVEN, FG_DATA_ODD) +} + +fn evaluate(x: u64, data_even: &[u64], data_odd: &[u64]) -> u64 { let data = if x.count_ones() % 2 == 0 { data_even } else { data_odd }; let mut out = 0; for i in 0..data.len() { - out = func0(out, x) ^ data[i]; + out = xor_mul(out, x) ^ data[i]; } out } #[cfg(not(all(target_arch = "x86_64", target_feature = "pclmulqdq")))] -fn func0(a: u64, mut b: u64) -> u64 { +fn xor_mul(a: u64, mut b: u64) -> u64 { let mut x: u64 = 0; while b != 0 { let c = b.trailing_zeros(); @@ -232,7 +105,7 @@ fn func0(a: u64, mut b: u64) -> u64 { } #[cfg(all(target_arch = "x86_64", target_feature = "pclmulqdq"))] -fn func0(a: u64, b: u64) -> u64 { +fn xor_mul(a: u64, b: u64) -> u64 { use std::arch::x86_64::*; unsafe { let a_vec = _mm_set_epi64x(0, a as i64); @@ -244,1145 +117,4 @@ fn func0(a: u64, b: u64) -> u64 { let high = _mm_extract_epi64(result, 1) as u64; low ^ high } -} - -#[cfg(test)] -mod tests { - use super::*; - use rand::prelude::*; - - #[test] - fn func0test() { - assert_eq!(2275218980137066521, func0(823376445, 2933488917)); - assert_eq!(7026402047137357602, func0(3691543355, 2547548462)); - assert_eq!(1360720565456786886, func0(1631669653, 1943537758)); - assert_eq!(6206853381339280580, func0(3418720847, 3281877132)); - assert_eq!(3821249963754522024, func0(1289221960, 3243927869)); - assert_eq!(882431475059032604, func0(367193564, 4097712529)); - assert_eq!(4926161117160240706, func0(3436171671, 4292693206)); - assert_eq!(3115965114924228534, func0(1753842422, 3687497057)); - assert_eq!(8734691127450451974, func0(4044078733, 2197737550)); - assert_eq!(2943203761612760392, func0(1244650136, 2964402935)); - assert_eq!(6772758496796810062, func0(3178786959, 2277874162)); - assert_eq!(164002738127771409, func0(2431906895, 67872835)); - assert_eq!(2534635611824557864, func0(1526866754, 2980150036)); - assert_eq!(2281422676663357779, func0(1974321509, 1338155343)); - assert_eq!(4809582189839732169, func0(2231376997, 2155687005)); - assert_eq!(7997326223635490910, func0(3333279658, 2464875795)); - assert_eq!(564698454155766592, func0(3819982240, 158798722)); - assert_eq!(150358408295203874, func0(1407059918, 178123531)); - assert_eq!(2950877544101808616, func0(4027467880, 2130465393)); - assert_eq!(7433963866346235715, func0(3231972439, 2337659549)); - assert_eq!(97718272192598598, func0(135080626, 727604235)); - assert_eq!(2019072571720999028, func0(2117949580, 1226677547)); - assert_eq!(4064354319484950360, func0(1685177180, 3015516490)); - assert_eq!(829978590409745198, func0(1043018378, 1910838971)); - assert_eq!(1343743912543815608, func0(1931247249, 1611122744)); - assert_eq!(344344082533737885, func0(1622600431, 499885623)); - assert_eq!(2258376149702545739, func0(1116642871, 2119709157)); - assert_eq!(870036298768927356, func0(510143124, 2841548211)); - assert_eq!(2291729428506812433, func0(822131093, 2919079061)); - assert_eq!(1942041239928076416, func0(2427487936, 866869806)); - assert_eq!(4413542076532948168, func0(1142011985, 4204104264)); - assert_eq!(7725503794949940832, func0(2652944930, 3355197488)); - assert_eq!(572731058715430966, func0(346457467, 1706449986)); - assert_eq!(771384575430546132, func0(349225434, 2383068914)); - assert_eq!(6720471466404264298, func0(2734432761, 2683021530)); - assert_eq!(10114228482972006, func0(6443214, 4037181469)); - assert_eq!(1462086330404018156, func0(2261477748, 692328079)); - assert_eq!(4248125061804235846, func0(1462734411, 3599520562)); - assert_eq!(438254739184660816, func0(150017636, 3401841844)); - assert_eq!(924924009899234107, func0(1890984405, 796124759)); - assert_eq!(1583433247430081905, func0(1511929045, 1335064885)); - assert_eq!(344452189567184841, func0(287207665, 1216709049)); - assert_eq!(8408046965142065312, func0(4005765152, 2223455621)); - assert_eq!(2340737587100291955, func0(2250772451, 1140023921)); - assert_eq!(1011391340612719836, func0(1260502354, 1055586398)); - assert_eq!(4539082446856232019, func0(1275385147, 3900684569)); - assert_eq!(2073697442264457591, func0(807071233, 3145796471)); - assert_eq!(464008672190170508, func0(2328300556, 203128353)); - assert_eq!(1750720338177427574, func0(2052773661, 1464133406)); - assert_eq!(2818450916558278418, func0(1307950731, 2266653278)); - assert_eq!(3087550251367439382, func0(3748440942, 1748394149)); - assert_eq!(31065924273406873, func0(28131655, 1185107827)); - assert_eq!(1637091247100653372, func0(2583625587, 719595348)); - assert_eq!(1187803888684817137, func0(955126175, 3662511859)); - assert_eq!(1076693608643937976, func0(2415810454, 479440468)); - assert_eq!(886932995053456855, func0(1998857853, 785872531)); - assert_eq!(4041577507147387694, func0(1989558127, 2317016338)); - assert_eq!(3195373375008716592, func0(1544958382, 2317403752)); - assert_eq!(4344034197574385581, func0(1163146903, 4257380511)); - assert_eq!(4548739690401687331, func0(1816152237, 3218195687)); - assert_eq!(5688846906041887124, func0(4241496484, 3500572141)); - assert_eq!(3748650067680712929, func0(1670205605, 2600188565)); - assert_eq!(4489150664351988267, func0(3047056993, 1752871819)); - assert_eq!(3552290940876679256, func0(2242739114, 1630483100)); - assert_eq!(8404550793217443760, func0(2273636432, 3969930983)); - assert_eq!(1348409384823762177, func0(1007538615, 3531004331)); - assert_eq!(3545691341191605002, func0(1926409210, 3055258457)); - assert_eq!(1627039133669989128, func0(1103530570, 1540713044)); - assert_eq!(337319684340642581, func0(1071722095, 936379311)); - assert_eq!(2488111028592156108, func0(1363867182, 2686974746)); - assert_eq!(1838074366800239376, func0(1986957250, 1524007560)); - assert_eq!(375258788906303722, func0(3294750862, 201986535)); - assert_eq!(6087525133192784177, func0(3763006281, 3772000697)); - assert_eq!(1250706533780855424, func0(2592292625, 618017408)); - assert_eq!(1567055362944800611, func0(821519937, 3400471971)); - assert_eq!(3839668165238544140, func0(4126323486, 1498898218)); - assert_eq!(5154501295052475800, func0(3753548118, 4004509476)); - assert_eq!(276252029851915445, func0(2169263253, 128333985)); - assert_eq!(4303845948374636936, func0(1219406786, 4048413508)); - assert_eq!(8955630451326320612, func0(2308854182, 4142939790)); - assert_eq!(3950342623314748312, func0(2635951912, 1687868271)); - assert_eq!(1347719876603310184, func0(978203467, 3440087448)); - assert_eq!(4325169701035756612, func0(2021926123, 2172822044)); - assert_eq!(1123560531444408352, func0(2415743450, 510384080)); - assert_eq!(302367434318115088, func0(1695451564, 510042140)); - assert_eq!(5425253682140093808, func0(2454871170, 2220814520)); - assert_eq!(1440678434476164920, func0(941214316, 3378223338)); - assert_eq!(6738906437434918068, func0(3161261478, 2254805142)); - assert_eq!(1200367617776126876, func0(4107039252, 866921035)); - assert_eq!(4356587871866293326, func0(1202192174, 4225386321)); - assert_eq!(918255447474733459, func0(1296132779, 932888873)); - assert_eq!(286069664049683456, func0(1223290368, 238264130)); - assert_eq!(737264942432347260, func0(3336065407, 411345540)); - assert_eq!(360102161648468383, func0(332266485, 1087376259)); - assert_eq!(531469479175514084, func0(837869778, 752496162)); - assert_eq!(5488021351449658331, func0(4053318219, 3627637233)); - assert_eq!(2195117409397730144, func0(1281698344, 1888304668)); - assert_eq!(763462177913700116, func0(323851131, 3063765996)); - assert_eq!(4040244555080779916, func0(1658170916, 3092066683)); - assert_eq!(3852821034638912936, func0(1753274702, 2278544668)); - assert_eq!(4041373326734813864, func0(2263341818, 1915177764)); - assert_eq!(1963702993615069667, func0(1919728625, 1382000883)); - assert_eq!(4877789904824206100, func0(3361201225, 4026614708)); - assert_eq!(30179695802284800, func0(63431512, 768970272)); - assert_eq!(1449592659987634229, func0(1612461201, 1615233253)); - assert_eq!(4261547527047212185, func0(1965217825, 2238776249)); - assert_eq!(8423406086031164118, func0(4281074866, 2643256195)); - assert_eq!(1782123918688200992, func0(1418043636, 2071419944)); - assert_eq!(1047489370443739329, func0(2764618499, 454805695)); - assert_eq!(2934673406450453408, func0(4134873516, 2100643096)); - assert_eq!(5650705393643171844, func0(2943771772, 3197035875)); - assert_eq!(1038767850510879704, func0(1267164458, 1060555612)); - assert_eq!(4204937883267119488, func0(1646378432, 3071105114)); - assert_eq!(411829728143907900, func0(4104299556, 243262903)); - assert_eq!(7871739648472512000, func0(3892839244, 2908343424)); - assert_eq!(2984675312994870904, func0(3160475925, 1312301464)); - assert_eq!(21035103484703632, func0(162635036, 150285900)); - assert_eq!(3251194670058000317, func0(2379882081, 1573406045)); - assert_eq!(110250149841963592, func0(534172326, 343271772)); - assert_eq!(7078970850659721868, func0(2244340883, 3275910212)); - assert_eq!(2725272366739724240, func0(1949499772, 3488175260)); - assert_eq!(595614546781317578, func0(532656446, 3304604751)); - assert_eq!(4117176559172186460, func0(2144016228, 2527036959)); - assert_eq!(2632599442184004850, func0(1195711793, 2649908626)); - assert_eq!(8283259829447755662, func0(4242278674, 2515258815)); - assert_eq!(8576464463094299940, func0(3718522222, 2812874342)); - assert_eq!(1921698232043823400, func0(1109599650, 1775528660)); - assert_eq!(1154402324203904172, func0(1476051740, 1384187285)); - assert_eq!(455463673979035594, func0(214276239, 2219875006)); - assert_eq!(2384533312140370925, func0(3175026621, 1491797393)); - assert_eq!(1891967452146534940, func0(990728773, 2804246444)); - assert_eq!(8051443749879688498, func0(2551326570, 3398973725)); - assert_eq!(610551727018460416, func0(2081384706, 815047296)); - assert_eq!(986636632557619796, func0(902596084, 1155254281)); - assert_eq!(1091429410910539584, func0(478991904, 2657795994)); - assert_eq!(8776624415569207203, func0(2977137159, 3727366797)); - assert_eq!(382219229381305275, func0(646537673, 767549155)); - assert_eq!(3879007306152627155, func0(4284337903, 1578339205)); - assert_eq!(5640927286993029844, func0(3876557086, 3452918622)); - assert_eq!(1998985482433578131, func0(2042549347, 1566472785)); - assert_eq!(2168046308224159248, func0(1457939723, 1686938480)); - assert_eq!(4466965408553605840, func0(2457856272, 1956085501)); - assert_eq!(1067663693542443033, func0(977508429, 1128940005)); - assert_eq!(8860666141481256660, func0(3985583770, 2544156338)); - assert_eq!(745516573917847823, func0(480123883, 4004776317)); - assert_eq!(6438483768859797674, func0(3143262762, 2324635713)); - assert_eq!(3254090421191095208, func0(3620879492, 1728307114)); - assert_eq!(1340483629302253568, func0(3428653120, 980314656)); - assert_eq!(2411345400251493265, func0(2399278795, 1158313383)); - assert_eq!(6651644068546691056, func0(3699784488, 3449780262)); - assert_eq!(6292307452484462516, func0(2235066222, 2861630718)); - assert_eq!(681387698627300975, func0(1650061851, 943566413)); - assert_eq!(8383786330681871058, func0(3338203166, 3051808523)); - assert_eq!(8556366266451367696, func0(3754229852, 2794985068)); - assert_eq!(5879489647181272672, func0(2452073158, 3072584464)); - assert_eq!(3254887619117977121, func0(2252534289, 1507028785)); - assert_eq!(1891777769572061084, func0(3873245929, 716324604)); - assert_eq!(716988359874547192, func0(3201491255, 361375432)); - assert_eq!(8773276214145328288, func0(4115558392, 2244003260)); - assert_eq!(1557858294476708064, func0(2354601828, 686262392)); - assert_eq!(6517694501844039680, func0(3398545856, 3549470752)); - assert_eq!(4066267488082735696, func0(1758402864, 2805295731)); - assert_eq!(3595903941024271292, func0(1413796534, 4117469210)); - assert_eq!(4741134743254315904, func0(2325717790, 2310876736)); - assert_eq!(266074381549681662, func0(1881177169, 146222494)); - assert_eq!(6058711024417491765, func0(2204038291, 2879243651)); - assert_eq!(1718993490673745892, func0(2459229789, 712918100)); - assert_eq!(2716445728417641712, func0(1233340744, 2239562798)); - assert_eq!(8745705085685282468, func0(2695032622, 3270520678)); - assert_eq!(240884880814460464, func0(185694725, 2073299440)); - assert_eq!(370338321743340060, func0(1927878045, 500448908)); - assert_eq!(5573963629959711288, func0(3708488923, 4134848168)); - assert_eq!(541758693581570993, func0(3382379489, 181618257)); - assert_eq!(1815967889786955188, func0(1429495489, 2108672692)); - assert_eq!(4041604264929827155, func0(3249256207, 1600814245)); - assert_eq!(952003732340514366, func0(337370794, 3918218595)); - assert_eq!(4332233817724496798, func0(1812951086, 3063286953)); - assert_eq!(1758658545102429502, func0(2746796405, 1065632262)); - assert_eq!(540269665119950416, func0(1585842566, 433209112)); - assert_eq!(2331775051124288019, func0(2065558545, 3398949923)); - assert_eq!(307490286585000947, func0(461817349, 1948269263)); - assert_eq!(960292366624895421, func0(1543654715, 1053356755)); - assert_eq!(2157515180864683421, func0(3298669099, 751530403)); - assert_eq!(487852033197913091, func0(1927701481, 350032635)); - assert_eq!(2984595772390019960, func0(3545686998, 1800861044)); - assert_eq!(3392204407324397988, func0(2173364313, 1589689028)); - assert_eq!(1687946440198430352, func0(4177494640, 944731779)); - assert_eq!(39287165401589762, func0(1991068770, 57386801)); - assert_eq!(1100437088382813246, func0(1577671925, 878786054)); - assert_eq!(862950049948957457, func0(1662101853, 887867421)); - assert_eq!(2332695340952914938, func0(3280480578, 2122372317)); - assert_eq!(462363662690671169, func0(545694885, 866050229)); - assert_eq!(3052771912967790776, func0(1459213981, 2241587096)); - assert_eq!(920814936415458234, func0(2134665779, 718464502)); - assert_eq!(70831990903737178, func0(853535583, 85914286)); - assert_eq!(1344859749633130679, func0(2157802473, 628177775)); - assert_eq!(3428977288760135037, func0(1791083763, 3251293275)); - assert_eq!(1721466933995983702, func0(3738274869, 847866702)); - assert_eq!(3384471763492985384, func0(3414274072, 1814298819)); - assert_eq!(2192502073650024941, func0(2890196027, 852102243)); - assert_eq!(1733565508298695626, func0(2792063762, 1051404813)); - assert_eq!(1532023292037786912, func0(2370877684, 689901864)); - assert_eq!(559614790651608242, func0(291650478, 2063352163)); - assert_eq!(5619240326630354996, func0(2727081038, 3031714974)); - assert_eq!(6190657267302765724, func0(4192667396, 4161955943)); - assert_eq!(679208445002198844, func0(2116906316, 933317045)); - assert_eq!(1430495629237040970, func0(2195270695, 656040174)); - assert_eq!(1758830525608466631, func0(4006564763, 801380245)); - assert_eq!(4625807642296379568, func0(3476098436, 4085248172)); - assert_eq!(4248813050677024640, func0(1756035124, 2867110752)); - assert_eq!(3429570552635333824, func0(1589085520, 2209700604)); - assert_eq!(4750842979111071920, func0(2336421774, 2284355496)); - assert_eq!(1021348587074499006, func0(608186674, 2119354007)); - assert_eq!(2650438524731897405, func0(3278912387, 1894748779)); - assert_eq!(1351722393614577911, func0(3873437327, 814233097)); - assert_eq!(2686403937481637342, func0(2194661374, 1272337201)); - assert_eq!(164459815905328414, func0(3372082866, 121763335)); - assert_eq!(5470234883889678, func0(376314766, 21646145)); - assert_eq!(2007298046738591390, func0(612987929, 3310593550)); - assert_eq!(7579170471480569320, func0(2919769722, 3772899844)); - assert_eq!(3968476460573009653, func0(1948625227, 2832099163)); - assert_eq!(4340678797444951998, func0(3191445514, 1807390099)); - assert_eq!(7832464371503197486, func0(2994368086, 4218339445)); - assert_eq!(982620286037513066, func0(619247894, 1613434459)); - assert_eq!(1809487919217160166, func0(2934499234, 1059642243)); - assert_eq!(2227413677592354988, func0(905868166, 3140412082)); - assert_eq!(1958340477793776136, func0(1004501418, 2866117396)); - assert_eq!(590440659472964824, func0(420902903, 4146813608)); - assert_eq!(3970885299515062746, func0(3846845727, 1344431534)); - assert_eq!(164475886718180190, func0(1020415601, 447873278)); - assert_eq!(1062027837126423760, func0(3032151014, 412430936)); - assert_eq!(429619033882122664, func0(1621666264, 448531563)); - assert_eq!(5465767171073422050, func0(3345982579, 3812216638)); - assert_eq!(347658486012260024, func0(1478516335, 350366280)); - assert_eq!(6440862574948199618, func0(3782557837, 4098062842)); - assert_eq!(1270604464903699470, func0(1751112038, 1890371245)); - assert_eq!(3990241783457318167, func0(2091942305, 3077482359)); - assert_eq!(3095411610704251470, func0(3928441734, 1952104285)); - assert_eq!(1069952684789806615, func0(3188097795, 432905997)); - assert_eq!(1549510620786047412, func0(3674778462, 878268622)); - assert_eq!(1429727667635371368, func0(599105724, 2443677518)); - assert_eq!(889132028527773456, func0(3417495052, 292769468)); - assert_eq!(1109664055108497692, func0(1000278385, 1272878172)); - assert_eq!(2990842971177857614, func0(1226065605, 2998674070)); - assert_eq!(4894085341085904512, func0(2249201185, 2177891968)); - assert_eq!(1859036770300358570, func0(4014348786, 756516621)); - assert_eq!(2451518505915255646, func0(1232096701, 2578825494)); - assert_eq!(2205946059708622052, func0(1641031343, 1385566060)); - assert_eq!(3607888246633189888, func0(1166920549, 3333224960)); - assert_eq!(3409366258867729020, func0(1443805428, 2514027643)); - assert_eq!(4122535696483767818, func0(3152364589, 1628836498)); - assert_eq!(6584536497103126554, func0(3137221462, 2391924179)); - assert_eq!(3245159287932023751, func0(3847638123, 2061142533)); - assert_eq!(4609438965157669332, func0(1542442263, 3568168668)); - assert_eq!(1564728155339319015, func0(630777123, 3179001917)); - assert_eq!(5978365295179605808, func0(2304428272, 2920878405)); - assert_eq!(972742158466457616, func0(2128754666, 803902760)); - assert_eq!(7625899292046064160, func0(3175610740, 4224628456)); - assert_eq!(2983624539619229192, func0(1937022356, 3968084458)); - assert_eq!(5497434190094288088, func0(3313445210, 3951395836)); - assert_eq!(199197631139916560, func0(4086182872, 120131182)); - assert_eq!(2273250670276286060, func0(1194807547, 2073909380)); - assert_eq!(3494453182023216983, func0(2980208217, 1921386399)); - assert_eq!(180270644748392130, func0(1880151370, 249058581)); - assert_eq!(1020687423684566464, func0(3162858504, 403593144)); - assert_eq!(291374995101965483, func0(1173506421, 289551719)); - assert_eq!(6167212839858030320, func0(2237591192, 2940713642)); - assert_eq!(4488824941658136448, func0(2081720640, 2173211942)); - assert_eq!(2206242177574492224, func0(1713226528, 1456526962)); - assert_eq!(8500616454723219552, func0(2185519189, 3894612448)); - assert_eq!(236078952304886049, func0(378394021, 1030145365)); - assert_eq!(3791741142945851634, func0(3533006866, 1079459825)); - assert_eq!(7674861032202750752, func0(3854222824, 2901179220)); - assert_eq!(88593838880189540, func0(479139274, 434522266)); - assert_eq!(3731498617958392025, func0(1735328383, 2168827627)); - assert_eq!(4957327058688802720, func0(3654712552, 3979332484)); - assert_eq!(7586489473623616224, func0(2154882788, 3537252856)); - assert_eq!(5143234237995849488, func0(3236767920, 4099088967)); - assert_eq!(60814690151151476, func0(498610518, 176543174)); - assert_eq!(2494338124570153837, func0(1448467319, 2933168959)); - assert_eq!(733832228618837770, func0(349844931, 2236268166)); - assert_eq!(7844804996009623654, func0(2464193762, 3261818019)); - assert_eq!(5518707381922347405, func0(3166848573, 2843734769)); - assert_eq!(3829929761992272984, func0(2414509228, 1861674690)); - assert_eq!(4094706142515960729, func0(2986286595, 1687969655)); - assert_eq!(345618432118279752, func0(2992767531, 175111800)); - assert_eq!(798568757356499947, func0(560702467, 1518587225)); - assert_eq!(352626257298633474, func0(968320474, 856724989)); - assert_eq!(3570273852672598722, func0(2820928119, 2049887638)); - assert_eq!(3735523136603139435, func0(2522699243, 1753191297)); - assert_eq!(2181915330402303264, func0(3484973196, 717809720)); - assert_eq!(5723993708054967808, func0(2513790800, 2315259616)); - assert_eq!(1727680221548818127, func0(1566988465, 1115445087)); - assert_eq!(5273304784419026355, func0(2456730373, 2151011983)); - assert_eq!(3175623972632029919, func0(1830002671, 3306360913)); - assert_eq!(4447007966674445116, func0(1371836457, 3321051740)); - assert_eq!(3899839142503181672, func0(3608266446, 1171579836)); - assert_eq!(1993558991869011729, func0(2567198675, 845022879)); - assert_eq!(5933240954264181656, func0(2457851548, 2952909370)); - assert_eq!(4597526342616153493, func0(2919650215, 1673911591)); - assert_eq!(1547485473755000787, func0(1760812609, 1863559443)); - assert_eq!(5683553362672329498, func0(3872366101, 3449241586)); - assert_eq!(494769461427248570, func0(4031818898, 199052341)); - assert_eq!(3797776063332282449, func0(1433727141, 3859327461)); - assert_eq!(6588752316325819690, func0(3869514115, 4125126630)); - assert_eq!(391832171403485124, func0(857584047, 838712332)); - assert_eq!(880029967602815000, func0(426878809, 2412794200)); - assert_eq!(7593890349902382474, func0(2745495614, 3940158127)); - assert_eq!(6926956260679816736, func0(3899644216, 3109462188)); - assert_eq!(1731149291020412220, func0(876866220, 2632937341)); - assert_eq!(5660738063111627788, func0(3596395324, 4225200661)); - assert_eq!(1788936071689986148, func0(3206921692, 984843907)); - assert_eq!(874573593734676768, func0(2550097481, 463767584)); - assert_eq!(1182143537867310080, func0(1700803120, 2062119872)); - assert_eq!(8393752603899524206, func0(4260442877, 2681042150)); - assert_eq!(1782297911710605872, func0(672832912, 4215320203)); - assert_eq!(7052660320218896402, func0(4169531158, 2817369775)); - assert_eq!(5966122521260465752, func0(3293987770, 3266008572)); - assert_eq!(493613352831265072, func0(531058236, 1522941332)); - assert_eq!(3308367842185720871, func0(1700999837, 3515347331)); - assert_eq!(5582146373973471156, func0(3128843194, 2892662498)); - assert_eq!(5197577012378903625, func0(3966451265, 3456919561)); - assert_eq!(5076235779695138180, func0(3233955540, 4155667461)); - assert_eq!(5041956745231058732, func0(3137053980, 3153402677)); - assert_eq!(449029540692164234, func0(1948118349, 397191634)); - assert_eq!(3786442463749305066, func0(1190621674, 3628889985)); - assert_eq!(3440549460014024670, func0(2106866191, 3857895490)); - assert_eq!(1528962614547299152, func0(1868126580, 1767828516)); - assert_eq!(2508532949574004150, func0(2992004222, 1505434157)); - assert_eq!(2327634121549296275, func0(3925694773, 1758870655)); - assert_eq!(7257180057129154944, func0(3850715328, 3160777378)); - assert_eq!(9216621579985580286, func0(3048160665, 3608126574)); - assert_eq!(5907475734858138670, func0(4014836531, 3770002874)); - assert_eq!(47299776568275280, func0(427576720, 206045037)); - assert_eq!(174074512819035664, func0(3410244060, 119887148)); - assert_eq!(3116298418657666199, func0(1271130465, 3180671159)); - assert_eq!(130740941844403068, func0(1612373183, 92275332)); - assert_eq!(2227746384385250634, func0(1193198319, 2119181822)); - assert_eq!(3563068769544832918, func0(3221281694, 1128691149)); - assert_eq!(108980518478507848, func0(860113823, 143009496)); - assert_eq!(112146113283630940, func0(2816955165, 66355916)); - assert_eq!(3209498496158786286, func0(3954084329, 2142877022)); - assert_eq!(6193441409059035240, func0(2647124952, 2994962307)); - assert_eq!(6226869574356444159, func0(3227595467, 3372069325)); - assert_eq!(4843814881447501259, func0(2962522447, 3198222413)); - assert_eq!(426630101308735846, func0(3846010890, 262073999)); - assert_eq!(1853798696792617694, func0(566897337, 3373327502)); - assert_eq!(1966838142700480504, func0(993591588, 2862230030)); - assert_eq!(3639461145036136796, func0(4106490356, 1360639763)); - assert_eq!(1925534994360371342, func0(1147025403, 1817816938)); - assert_eq!(3634425862933673426, func0(1644186057, 2299475010)); - assert_eq!(2464111059642867566, func0(1247843818, 2667617035)); - assert_eq!(2350153312285279665, func0(1624158905, 4256796873)); - assert_eq!(2850531047138812302, func0(4189932329, 1798351294)); - assert_eq!(1486082696691782420, func0(2909702661, 585213700)); - assert_eq!(2649806316519305424, func0(2086760360, 3701034034)); - assert_eq!(2170383500442791041, func0(903084605, 3189606445)); - assert_eq!(1643767853711382158, func0(3858601673, 1031921150)); - assert_eq!(7725199539164948432, func0(4105452632, 2982393158)); - assert_eq!(3006749785472129805, func0(4054198601, 2110049381)); - assert_eq!(3984594387247199320, func0(2954774136, 2129671437)); - assert_eq!(5454653628742070890, func0(2455422454, 2241343915)); - assert_eq!(949909218755351823, func0(683140463, 1971658401)); - assert_eq!(6648710440848711212, func0(2219107298, 3174795830)); - assert_eq!(4387467003412738779, func0(1218197297, 4018893323)); - assert_eq!(3949143420499952336, func0(1231611404, 3230742124)); - assert_eq!(3102058349658132183, func0(4003938445, 1953020995)); - assert_eq!(5824364053818140888, func0(3432057350, 3447619620)); - assert_eq!(402448503266966352, func0(326694335, 1464707568)); - assert_eq!(283343416853086680, func0(1703441535, 171480680)); - assert_eq!(173366152475041984, func0(1675104601, 243296960)); - assert_eq!(1463526334944962896, func0(1101672560, 1358900359)); - assert_eq!(1724958009142895972, func0(1486151998, 1176283158)); - assert_eq!(323339694521048878, func0(1268794622, 325573177)); - assert_eq!(133197901901887265, func0(1204124321, 121339265)); - assert_eq!(7382917723094673096, func0(2395289908, 3307541578)); - assert_eq!(8654315346180184172, func0(2335856465, 4257754540)); - assert_eq!(4311595948954631948, func0(3152244583, 1695148084)); - assert_eq!(467947919192110215, func0(410485381, 1144582571)); - assert_eq!(1384759049206803106, func0(1860478875, 2053250542)); - assert_eq!(3698677069390789259, func0(1279301893, 3679739607)); - assert_eq!(4531388231301396529, func0(1146026651, 4096482775)); - assert_eq!(4166032737587999215, func0(2101349261, 2479848667)); - assert_eq!(479757380231767088, func0(1597221410, 534270872)); - assert_eq!(7782016477278872683, func0(4010439465, 2732134291)); - assert_eq!(1948994408556721464, func0(1502469948, 2113318002)); - assert_eq!(2102159745664376400, func0(2395642360, 953667038)); - assert_eq!(2642717006354016012, func0(2798113475, 1572922372)); - assert_eq!(604911721254394712, func0(392763210, 3037489500)); - assert_eq!(429728672387013272, func0(2027601540, 500792166)); - assert_eq!(466284266395859144, func0(1641644241, 287173192)); - assert_eq!(1099356420782787958, func0(673397154, 1658675531)); - assert_eq!(950895133767130432, func0(668641744, 1641024548)); - assert_eq!(1859758453069873974, func0(617495778, 3596757131)); - assert_eq!(3115416191363345932, func0(1111415988, 2849757511)); - assert_eq!(8050334533677165614, func0(3199023989, 4155509078)); - assert_eq!(5895330320397640798, func0(2438826278, 3020568405)); - assert_eq!(3190559650972604056, func0(4051408356, 1934783030)); - assert_eq!(2335118622826822339, func0(1906469141, 3651426575)); - assert_eq!(2816742440934079210, func0(3520534590, 2120434815)); - assert_eq!(7139426485652885536, func0(2310677648, 3421395218)); - assert_eq!(2590376858790817216, func0(2306917787, 1125249344)); - assert_eq!(6294487202012800747, func0(2287846107, 2763422865)); - assert_eq!(8359525168348312140, func0(2881210561, 3554125644)); - assert_eq!(6117909894342257884, func0(3432620892, 3258090273)); - assert_eq!(6436650438434468207, func0(3308309453, 3646739867)); - assert_eq!(880951093317656186, func0(484708015, 2977790766)); - assert_eq!(1414248317312558054, func0(1588004195, 1453516002)); - assert_eq!(5697171718473588768, func0(3393198812, 3802264920)); - assert_eq!(6614446099871830436, func0(2761600581, 2518684020)); - assert_eq!(8945002808370977863, func0(3698929917, 3200002627)); - assert_eq!(3336225862125073203, func0(1553481479, 2147616189)); - assert_eq!(32679099365301580, func0(2721265711, 14446868)); - assert_eq!(3887138410226351508, func0(1179637660, 3693794039)); - assert_eq!(4547498452923665171, func0(1153882173, 4065719335)); - assert_eq!(2361900330903588432, func0(2434686844, 1209203772)); - assert_eq!(2080524629819565339, func0(2018761491, 1314209657)); - assert_eq!(2546577658919579190, func0(1808047510, 3888309297)); - assert_eq!(3764704395585504420, func0(1614033174, 2668865694)); - assert_eq!(4305669791953995676, func0(2972346993, 1674976988)); - assert_eq!(4360497647571473560, func0(2070695446, 2263774500)); - assert_eq!(217184807489458877, func0(424742517, 591044329)); - assert_eq!(2014088650827117220, func0(3525440701, 574499220)); - assert_eq!(2830852220292963908, func0(2909241532, 1587758627)); - assert_eq!(556966598590061799, func0(270115159, 2078895953)); - assert_eq!(4770082142318552280, func0(3359319032, 4065054509)); - assert_eq!(1988861666768413044, func0(659322078, 3459224046)); - assert_eq!(364202173505635776, func0(324918592, 1606708395)); - assert_eq!(5945478796003399675, func0(3933819603, 3769154969)); - assert_eq!(6439171132929748834, func0(2352118709, 3165429546)); - assert_eq!(617767329022097699, func0(1297973605, 607453695)); - assert_eq!(1741785644062149091, func0(1721059209, 1148203195)); - assert_eq!(5213773654996979073, func0(2744368367, 3166404307)); - assert_eq!(1840861617135866370, func0(2691549593, 1007234994)); - assert_eq!(3779258810997091568, func0(1681056560, 2429201685)); - assert_eq!(5131409734634441709, func0(2577772155, 2486518307)); - assert_eq!(600263778220748814, func0(3300740794, 529174883)); - assert_eq!(7059140477185270686, func0(3186873993, 3992661998)); - assert_eq!(215889863818598036, func0(3987772602, 127597490)); - assert_eq!(6907707261119618328, func0(3080061800, 2345370407)); - assert_eq!(1757682468643705459, func0(559271605, 3304350623)); - assert_eq!(1851485148460057080, func0(1066884376, 2859761397)); - assert_eq!(4440647653985702104, func0(2565981335, 1919983528)); - assert_eq!(451548364804342852, func0(2899997602, 268364162)); - assert_eq!(7192849386323380608, func0(3016573408, 3776911764)); - assert_eq!(2671662474848282871, func0(1075622309, 2490436347)); - assert_eq!(2103837083036266128, func0(1654495982, 1529540760)); - assert_eq!(6929832478717489952, func0(2402632232, 3356167604)); - assert_eq!(6663356815334017212, func0(2495687282, 2823166734)); - assert_eq!(831238524972775156, func0(1279703910, 698400438)); - assert_eq!(2714394132811664969, func0(1856552189, 4284675653)); - assert_eq!(939094430713284398, func0(1326010766, 812532337)); - assert_eq!(6828476440126435403, func0(3222021051, 3606536657)); - assert_eq!(874437249986550928, func0(4152851184, 362337483)); - assert_eq!(7473914318486340176, func0(2777531641, 4110247888)); - assert_eq!(4573578983396633728, func0(3116886956, 1861865440)); - assert_eq!(8408067264874841115, func0(4254699181, 2666454143)); - assert_eq!(102665758690983949, func0(166656421, 731389577)); - assert_eq!(3116290802993597152, func0(3535717130, 1814553520)); - assert_eq!(1075801001314835648, func0(470669920, 2295768770)); - assert_eq!(799105677043490186, func0(482274513, 4062744746)); - assert_eq!(628331459690883792, func0(2123019926, 856480408)); - assert_eq!(43528617938543256, func0(20150359, 2202040680)); - assert_eq!(1759919367703070358, func0(1436778690, 2036016363)); - assert_eq!(3551268864306481812, func0(3323811348, 1092452769)); - assert_eq!(78459986133614048, func0(1980484904, 114988044)); - assert_eq!(4690362599354536, func0(113665476, 120510794)); - assert_eq!(1724855956340929567, func0(583792937, 3080129991)); - assert_eq!(250063219286081792, func0(309887616, 825034922)); - assert_eq!(4484720894018751571, func0(1582972675, 3743506737)); - assert_eq!(129155055150900984, func0(62895960, 2398198861)); - assert_eq!(7644813940101280882, func0(3606622230, 2201641663)); - assert_eq!(4222071416571147124, func0(2683711620, 2139692925)); - assert_eq!(7403866903426819811, func0(2614571645, 3652136279)); - assert_eq!(3288023904694387728, func0(4272829557, 1985390160)); - assert_eq!(743332948690662105, func0(1284583189, 774967805)); - assert_eq!(1605519659285646920, func0(1507146392, 1089342423)); - assert_eq!(1119737655160722323, func0(444347995, 3055193465)); - assert_eq!(165300604864957136, func0(2127571147, 227732784)); - assert_eq!(4227648558739649664, func0(4027160970, 1263408960)); - assert_eq!(23771463911008541, func0(101288679, 432883775)); - assert_eq!(5071019533961269486, func0(2955447630, 3079286513)); - assert_eq!(5782285926531788288, func0(2775422328, 2218228288)); - assert_eq!(1123086122057207795, func0(438010733, 3050042039)); - assert_eq!(462453352622903972, func0(1911404209, 400364132)); - assert_eq!(759175622207799420, func0(1004676948, 2010448867)); - assert_eq!(7174566392434848652, func0(2689619133, 4177649756)); - assert_eq!(8024554970815363232, func0(4277251010, 2956941904)); - assert_eq!(3586796453350635613, func0(3528754871, 1305153071)); - assert_eq!(716299206502621504, func0(374575426, 2705855648)); - assert_eq!(2628184141572208768, func0(2875985344, 1514031478)); - assert_eq!(374341695695249432, func0(255529220, 4179288454)); - assert_eq!(1919739629069752160, func0(1988611499, 1364577824)); - assert_eq!(202035790036497791, func0(76919085, 2780898283)); - assert_eq!(1981062709390295715, func0(3579392937, 582364571)); - assert_eq!(3653060100725424177, func0(1125028491, 3482937479)); - assert_eq!(3255814583860007336, func0(2742354920, 1237042729)); - assert_eq!(261195369002632266, func0(2742550095, 109640638)); - assert_eq!(248760936616729444, func0(1017373079, 390839948)); - assert_eq!(1379299000317064896, func0(812412056, 4024020424)); - assert_eq!(315103690810603767, func0(284171331, 1175790957)); - assert_eq!(4613580130684264260, func0(2424301369, 2453403812)); - assert_eq!(8840391425047513056, func0(2781180696, 3269360340)); - assert_eq!(2656300754874885776, func0(2601208071, 1156852272)); - assert_eq!(1658627213996457161, func0(778656109, 2177966037)); - assert_eq!(8546293918947861628, func0(2642641668, 4214661471)); - assert_eq!(8858153802654084786, func0(3746124070, 3026835047)); - assert_eq!(187754628109357844, func0(1814572669, 234078820)); - assert_eq!(309402747996338570, func0(1629033495, 509708750)); - assert_eq!(7288324631331914464, func0(4088588518, 2818363856)); - assert_eq!(886742636323861553, func0(556728469, 1628084533)); - assert_eq!(9159247376663192, func0(172371064, 90295845)); - assert_eq!(4629491896586287332, func0(3063759180, 3218559623)); - assert_eq!(1604014465397402960, func0(1751689912, 1727401518)); - assert_eq!(3376729054096161204, func0(1521271519, 2364588636)); - assert_eq!(2206022078489840424, func0(2709085437, 822858184)); - assert_eq!(107338948033020176, func0(276488144, 398096317)); - assert_eq!(1924503528045604212, func0(750138329, 4110670740)); - assert_eq!(6121499544549568397, func0(3693024449, 3495034445)); - assert_eq!(5477439504046660637, func0(2403801031, 2531529503)); - assert_eq!(4885111907649357592, func0(3822966589, 3700671672)); - assert_eq!(3240844705600759386, func0(2528845171, 1349900758)); - assert_eq!(2496457627827240158, func0(2167851126, 1171997741)); - assert_eq!(5589406371718614, func0(2943585, 2715094678)); - assert_eq!(487941920366610576, func0(1900966247, 343303728)); - assert_eq!(399663220764840562, func0(207703599, 3632655030)); - assert_eq!(7106379551859402286, func0(4048798807, 2902009730)); - assert_eq!(3446381326060339626, func0(3966009615, 2031841566)); - assert_eq!(216398252627098741, func0(76155643, 3669822315)); - assert_eq!(2565706596304335168, func0(1398119192, 2703968536)); - assert_eq!(8086394062312383368, func0(3380921590, 3005173212)); - assert_eq!(4336843869955734576, func0(1411800844, 3487059972)); - assert_eq!(372048907370030905, func0(352911171, 1192219991)); - assert_eq!(364032366825454688, func0(255331280, 4247095854)); - assert_eq!(98184437105228900, func0(60270850, 3758853938)); - assert_eq!(3955778875704677028, func0(1457200580, 3910337369)); - assert_eq!(3522261510346046569, func0(3053048277, 1893094733)); - assert_eq!(7908000676665236923, func0(2961744845, 4200044799)); - assert_eq!(2094481739978900352, func0(827156209, 3082414976)); - assert_eq!(4760394739250299428, func0(2740680516, 2896892633)); - assert_eq!(4267402182700018264, func0(2866339691, 1808189192)); - assert_eq!(273858847910920180, func0(388149835, 880039820)); - assert_eq!(4590189607374278464, func0(3302804032, 1455497013)); - assert_eq!(8613720796834212156, func0(2997067890, 3306180558)); - assert_eq!(1989477620252852022, func0(1527598498, 2093296747)); - assert_eq!(2570801956815456032, func0(1483846180, 3047897480)); - assert_eq!(2791354498686132714, func0(1645769618, 3910621917)); - assert_eq!(4441439740424547786, func0(3451673242, 1472181449)); - assert_eq!(5950981168191011924, func0(3649320573, 3691663908)); - assert_eq!(3788544125558312544, func0(1325609568, 3272496289)); - assert_eq!(1528855978278406712, func0(3295185196, 850897354)); - assert_eq!(6330338938177597113, func0(4144943241, 4027972529)); - assert_eq!(8148877518727233608, func0(2994198455, 3400937368)); - assert_eq!(2408476831841572518, func0(4079797967, 1678949322)); - assert_eq!(3455329584421877766, func0(1416508134, 2458107345)); - assert_eq!(5243576307918972738, func0(4052998571, 3586428334)); - assert_eq!(2566913319942619485, func0(2103346013, 3441236481)); - assert_eq!(1213426958996050644, func0(4279275441, 827279124)); - assert_eq!(320115752068198416, func0(449420912, 1915187643)); - assert_eq!(1304503038703106814, func0(543356566, 2439852749)); - assert_eq!(1912989978926302732, func0(2752079014, 979248994)); - assert_eq!(2944985508975587974, func0(3127283805, 1309958702)); - assert_eq!(4206929653219854072, func0(3261213746, 1494395996)); - assert_eq!(3523072546174689158, func0(2388490182, 1696481249)); - assert_eq!(3203918533589519120, func0(3071340159, 1139844400)); - assert_eq!(662488956006071364, func0(3431247772, 495772683)); - assert_eq!(2858037651531688484, func0(2215188100, 1295918633)); - assert_eq!(4387218581580276724, func0(2639216006, 1942226646)); - assert_eq!(498932155654031328, func0(405944784, 1273548918)); - assert_eq!(6795023453381633478, func0(3671386971, 3429199954)); - assert_eq!(1860310628894204604, func0(1517961730, 2008887134)); - assert_eq!(305172512109618180, func0(455889334, 1938739726)); - assert_eq!(3079057827274749208, func0(1938649690, 3839514524)); - assert_eq!(1123957492061889236, func0(1621444460, 734518283)); - assert_eq!(101900646280025772, func0(56231897, 3463462668)); - assert_eq!(2438307288236494876, func0(3387239484, 2029232281)); - assert_eq!(7536108024986179551, func0(3308408217, 2561725079)); - assert_eq!(491903049534679319, func0(405417299, 1225019517)); - assert_eq!(861116868020411790, func0(373345018, 2401416771)); - assert_eq!(4530618806595095782, func0(4162265058, 1097159779)); - assert_eq!(1130466975104908710, func0(1023272459, 1178363666)); - assert_eq!(4560708238496500214, func0(1866290478, 3141197269)); - assert_eq!(2977986038634177701, func0(1124230515, 2732045331)); - assert_eq!(2890650920579604670, func0(1810694919, 3557257554)); - assert_eq!(2141098559569235838, func0(3967341647, 541544994)); - assert_eq!(1090650768396546763, func0(1244571397, 973287831)); - assert_eq!(76648113298751501, func0(1843467629, 125164001)); - assert_eq!(1630004319893056151, func0(3488931837, 899625555)); - assert_eq!(8565516408289496975, func0(4199419477, 2628548787)); - assert_eq!(7944262515015239174, func0(3981928881, 2923507110)); - assert_eq!(1323782380728260574, func0(2309881050, 649335419)); - assert_eq!(434726103336114639, func0(255120001, 2841923663)); - assert_eq!(6022683314687793200, func0(3574654928, 3551029431)); - assert_eq!(5291537132874400579, func0(3853128235, 3349812633)); - assert_eq!(5507000741441429303, func0(3477940161, 3801898103)); - assert_eq!(4053683243348307546, func0(4104275790, 1325785519)); - assert_eq!(472891556919672976, func0(1421905882, 479118504)); - assert_eq!(1461730001037645184, func0(3613418416, 902549384)); - assert_eq!(8439329632384531632, func0(3118499448, 3440192922)); - assert_eq!(3729854460223476168, func0(1448429818, 4193106900)); - assert_eq!(2248901375594896177, func0(578239239, 4154589707)); - assert_eq!(1582385900138989488, func0(1632521886, 1681108200)); - assert_eq!(3826213174957537678, func0(2985503554, 2067476647)); - assert_eq!(4909776093291832, func0(904063208, 14909827)); - assert_eq!(562487683858956776, func0(1472406200, 406601839)); - assert_eq!(1822698994295163541, func0(2526889319, 896985831)); - assert_eq!(3242258080608042872, func0(1393155834, 2440699436)); - assert_eq!(843088796616274327, func0(3118355093, 272758923)); - assert_eq!(350380165011701056, func0(169906280, 3025609416)); - assert_eq!(6482746072603825092, func0(4260026924, 3900608199)); - assert_eq!(3558339210796729558, func0(3552957433, 1290321606)); - assert_eq!(2482522885543542629, func0(2121276903, 3469056759)); - assert_eq!(1502276394932309348, func0(1045576067, 4084075228)); - assert_eq!(3193516249629652013, func0(4139743019, 1892490675)); - assert_eq!(3605494052580631340, func0(3826139829, 1583278876)); - assert_eq!(317554549634165574, func0(334903267, 1220227970)); - assert_eq!(6766402938426848210, func0(4026847430, 3903285319)); - assert_eq!(443765735057742328, func0(1515962271, 486379272)); - assert_eq!(8227958075891336276, func0(2509906454, 4244895094)); - assert_eq!(1046903751408644092, func0(1920800884, 586347643)); - assert_eq!(317272548618983328, func0(2068761352, 406273396)); - assert_eq!(361839928091908146, func0(140531805, 2802874602)); - assert_eq!(7214088363797987768, func0(3510148360, 2454585431)); - assert_eq!(41268866037288417, func0(1002258569, 108795945)); - assert_eq!(2213259581391720472, func0(1914980152, 1299264717)); - assert_eq!(2423938935974165343, func0(2125541563, 3353833533)); - assert_eq!(2571411258464574960, func0(1565740688, 3204969799)); - assert_eq!(38605534328029347, func0(2592201191, 18992941)); - assert_eq!(2747081803671221556, func0(1861720139, 4122392524)); - assert_eq!(4020549990485267272, func0(1674832919, 2421523352)); - assert_eq!(561233685089051645, func0(518141587, 1156663995)); - assert_eq!(3954928896985822472, func0(1826847142, 2213587004)); - assert_eq!(57497474012534722, func0(767815047, 125505782)); - assert_eq!(794900642886967112, func0(377306636, 2212939342)); - assert_eq!(1396445710543262962, func0(875329739, 4169205118)); - assert_eq!(407288484457294736, func0(1274166148, 348452196)); - assert_eq!(177056880645978584, func0(156467772, 1149359674)); - assert_eq!(48661332948497602, func0(933592826, 111187725)); - assert_eq!(3403835942987339714, func0(1690919093, 3751886602)); - assert_eq!(6950524138415637172, func0(3782520695, 3085825532)); - assert_eq!(397884239267814344, func0(445894678, 1697579516)); - assert_eq!(1652318226523599758, func0(2210400753, 755619374)); - assert_eq!(6796994911096741788, func0(2711827428, 2614650063)); - assert_eq!(159562634417028204, func0(1297268051, 155740900)); - assert_eq!(4343993304537566858, func0(1645397738, 2816471793)); - assert_eq!(5933438406025843600, func0(3209334269, 2665203536)); - assert_eq!(8481651695964614256, func0(3796864472, 2350615594)); - assert_eq!(6210978852743727565, func0(2518167671, 3170180831)); - assert_eq!(1215613455131613273, func0(1713335473, 2048260969)); - assert_eq!(552429516654894365, func0(3981120253, 159370081)); - assert_eq!(3900342269535305122, func0(2636148018, 1698992265)); - assert_eq!(1196641610495613274, func0(3775620495, 924088334)); - assert_eq!(644952771444430339, func0(501991229, 3725602551)); - assert_eq!(2444836718749822859, func0(1645584161, 4289702891)); - assert_eq!(609577737681480, func0(158091468, 5216110)); - assert_eq!(6530618479580850624, func0(2403678560, 3099755402)); - assert_eq!(3066525468095159640, func0(4175297044, 2082466798)); - assert_eq!(10376218787774318, func0(2063167022, 13864161)); - assert_eq!(3628817445653842582, func0(1541038705, 3945936566)); - assert_eq!(2767030295921031604, func0(3298795422, 1978238478)); - assert_eq!(3124075222562500130, func0(3806927990, 1927641623)); - assert_eq!(4593515628373318240, func0(1230139680, 3784778763)); - assert_eq!(23029050978871722, func0(129863753, 524890362)); - assert_eq!(1286360944094905672, func0(2997296446, 769689708)); - assert_eq!(8493922395701327108, func0(4292927580, 2654191691)); - assert_eq!(7519646265602506582, func0(3072940510, 4133376141)); - assert_eq!(1667046382755903168, func0(818635936, 3532009806)); - assert_eq!(3403854751261818103, func0(4045444515, 1990694477)); - assert_eq!(74537310785533293, func0(2991814861, 49980449)); - assert_eq!(6211739113946988068, func0(3081710245, 2673565556)); - assert_eq!(1687749243076882185, func0(2471169803, 727707951)); - assert_eq!(4054441100824201655, func0(1821271233, 2865574903)); - assert_eq!(8306871274617265746, func0(2665404687, 4078416278)); - assert_eq!(3655431443632129676, func0(4003712635, 1505316900)); - assert_eq!(419661221226497121, func0(2926077759, 152604515)); - assert_eq!(6701922304689110160, func0(3176783164, 2253953708)); - assert_eq!(6392987485494140880, func0(3840596204, 4078440524)); - assert_eq!(1853657984807349558, func0(2206418709, 870850670)); - assert_eq!(1533408776077285855, func0(2546972581, 788260083)); - assert_eq!(1830191231324604404, func0(3855661556, 801123713)); - assert_eq!(2178603539343213500, func0(1353049986, 1612659550)); - assert_eq!(2537232780872824122, func0(1352331499, 2760542406)); - assert_eq!(8163791836131488076, func0(3606455548, 2706411189)); - assert_eq!(1100288496149320802, func0(1247525914, 998922477)); - assert_eq!(2745050095963503332, func0(3998496658, 1625279970)); - assert_eq!(2007649168137497473, func0(2866386861, 977669821)); - assert_eq!(318304702241300895, func0(1029666535, 822054601)); - assert_eq!(3002829971830215990, func0(1636101326, 3351895717)); - assert_eq!(3412593204024616744, func0(3984155916, 2017445318)); - assert_eq!(538895953737505723, func0(348408749, 1858922847)); - assert_eq!(967952335835043541, func0(1688352509, 622919369)); - assert_eq!(315820282820258322, func0(1063972581, 841308730)); - assert_eq!(4070090396127280240, func0(1482880904, 3401566254)); - assert_eq!(8565233277536069014, func0(3199321635, 3465218738)); - assert_eq!(224756054879272989, func0(3866340541, 95481633)); - assert_eq!(1365644313630637902, func0(3200774075, 703227306)); - assert_eq!(1826838785381143616, func0(944834416, 3106138220)); - assert_eq!(1730337662159246944, func0(978057200, 3098910890)); - assert_eq!(1870402601013270085, func0(1992703021, 1528770313)); - assert_eq!(2207495121372982784, func0(4196070144, 574581050)); - assert_eq!(1480752793635483952, func0(2828349765, 603956976)); - assert_eq!(1116023908331408616, func0(513032004, 2196365082)); - assert_eq!(8113647549246332262, func0(3091636074, 3299075935)); - assert_eq!(756797341121703633, func0(1673520765, 842301437)); - assert_eq!(1131174835562809354, func0(308336175, 3855243198)); - assert_eq!(5912423929011732624, func0(3984294417, 3866835344)); - assert_eq!(39642944140571365, func0(44332983, 1444943399)); - assert_eq!(2289147471396024286, func0(2629714142, 983007361)); - assert_eq!(5150873468918355648, func0(2962505664, 3045181677)); - assert_eq!(1886683567232970998, func0(605908629, 3359233966)); - assert_eq!(8685210974498515924, func0(3912467167, 2535516412)); - assert_eq!(54100315976436318, func0(535204151, 168493010)); - assert_eq!(3862708117517718560, func0(2392307464, 1868960004)); - assert_eq!(1236129659150626294, func0(1673926943, 2076549978)); - assert_eq!(890473679075136256, func0(688074176, 2123300916)); - assert_eq!(3104825440856317166, func0(1985023573, 3936185686)); - assert_eq!(4129792465246017888, func0(1308578152, 4128200636)); - assert_eq!(598546585681677458, func0(4103074083, 435246798)); - assert_eq!(4195194777234942812, func0(1442222090, 3546297462)); - assert_eq!(1186689603005453024, func0(2007934452, 1786842776)); - assert_eq!(85763224323422977, func0(3905717353, 51935529)); - assert_eq!(2125905792429400148, func0(1420521396, 1794970969)); - assert_eq!(7594886574013839918, func0(3938022211, 2749477274)); - assert_eq!(2822895860927682074, func0(1522029866, 2772780537)); - assert_eq!(1544002914547342585, func0(3703575487, 889024075)); - assert_eq!(7184274632418745883, func0(4192465987, 2693224393)); - assert_eq!(8362762975605511714, func0(3339839166, 3021798675)); - assert_eq!(341958651073118819, func0(206917775, 3786399349)); - assert_eq!(3426040861808420034, func0(2421035610, 1435130717)); - assert_eq!(300602294634399142, func0(4015049699, 218454562)); - assert_eq!(1150542769424318323, func0(285947433, 4027706955)); - assert_eq!(190164010168428222, func0(117815593, 3761426702)); - assert_eq!(991974643415506982, func0(2275848750, 454545709)); - assert_eq!(265459041805652440, func0(2978728364, 101877090)); - assert_eq!(3631935834178032804, func0(2039788147, 2768282460)); - assert_eq!(2010993643127733662, func0(2327545089, 880450462)); - assert_eq!(726222233152908868, func0(749645316, 1243179025)); - assert_eq!(2187342209211609004, func0(661252374, 3864204354)); - assert_eq!(1328460006090375142, func0(1225905479, 1085982330)); - assert_eq!(4525014405810506688, func0(1390701120, 3482531063)); - assert_eq!(860563049782118685, func0(462537653, 3357223689)); - assert_eq!(4217280421393841424, func0(1315180072, 4245565962)); - assert_eq!(4771097447456160104, func0(2579150552, 2683495875)); - assert_eq!(726917923852884045, func0(3663346347, 454460179)); - assert_eq!(924237891839760592, func0(525800678, 2918374488)); - assert_eq!(33457941248930314, func0(47200130, 818077125)); - assert_eq!(7487623379825410304, func0(3985092400, 3061367024)); - assert_eq!(4451917604570386392, func0(2656917572, 1895239318)); - assert_eq!(223933442029062274, func0(233459201, 1230148738)); - assert_eq!(350936311922357243, func0(1055912183, 888054261)); - assert_eq!(821744094681912075, func0(1957517999, 1053072557)); - assert_eq!(1681506824442221653, func0(1915321089, 2115957589)); - assert_eq!(8066118979194009014, func0(2440935734, 3337847745)); - assert_eq!(8332455676178691328, func0(2587942336, 4112081756)); - assert_eq!(6311081256779047556, func0(3127824482, 2462463778)); - assert_eq!(4861050849926498638, func0(2856583418, 2813708707)); - assert_eq!(412118501672632791, func0(1864590221, 413093443)); - assert_eq!(2837228334140298808, func0(1866932529, 4036088504)); - assert_eq!(369959726682782063, func0(2646370715, 197244877)); - assert_eq!(1924219631900387622, func0(1017954682, 3078455335)); - assert_eq!(1523096706775368228, func0(1027462234, 4133962666)); - assert_eq!(6052318944292123864, func0(3716917912, 3675832889)); - assert_eq!(3706354363532715015, func0(1123529349, 3404323627)); - assert_eq!(1771258249580110788, func0(929455971, 2473751868)); - assert_eq!(6229523256495690457, func0(3460896291, 3330936343)); - assert_eq!(153103417302791597, func0(176639623, 1383282703)); - assert_eq!(1358253247071214540, func0(2151375092, 633191751)); - assert_eq!(4451917931570624896, func0(3712331088, 1512672760)); - assert_eq!(1817451173348146207, func0(580846025, 3337855591)); - assert_eq!(4083337477384481714, func0(2414902587, 1960404190)); - assert_eq!(1746448498110808186, func0(1104771078, 1640121323)); - assert_eq!(1811749934442391677, func0(537210059, 3376056803)); - assert_eq!(3122846889760556355, func0(1321659661, 3036666599)); - assert_eq!(9147869923242351629, func0(3678135173, 3155668777)); - assert_eq!(2453009113817020748, func0(2727223935, 1364433364)); - assert_eq!(320089281842637330, func0(1903440514, 438761033)); - assert_eq!(1565616127386769032, func0(1788039160, 1864581491)); - assert_eq!(1036923734868458562, func0(276779450, 3839540717)); - assert_eq!(134424585484511399, func0(913549363, 169438029)); - assert_eq!(8716472888939175980, func0(3338885205, 2783665308)); - assert_eq!(8288622766487616556, func0(2922760860, 3624264149)); - assert_eq!(7835038569786921644, func0(2570579526, 3450730738)); - assert_eq!(2503471391660145800, func0(2377964908, 1132614382)); - assert_eq!(3928395794655800724, func0(2098484404, 2969765033)); - assert_eq!(2072182000837503520, func0(1519266800, 1695450982)); - assert_eq!(8265973739358637130, func0(3537698594, 2726117621)); - assert_eq!(1802493032785571299, func0(1032247613, 2725268375)); - assert_eq!(19619185861751454, func0(10039482, 2437837899)); - assert_eq!(2215468640369760894, func0(785872870, 3588761349)); - assert_eq!(3572529816541817015, func0(1398253819, 4261383781)); - assert_eq!(370307757439420710, func0(733144854, 571532489)); - assert_eq!(3845981760053323678, func0(1734910270, 2476192753)); - assert_eq!(1484295529764415160, func0(3417707480, 857640133)); - assert_eq!(128892999448872122, func0(70566093, 1883284130)); - assert_eq!(5837381070791843116, func0(3872595146, 3898394990)); - assert_eq!(3478736982000091976, func0(1787136808, 2597168253)); - assert_eq!(4306153282790701648, func0(3195871408, 1713448875)); - assert_eq!(44033129449486889, func0(29672223, 3383065115)); - assert_eq!(6700480050728099263, func0(3110864417, 2158105695)); - assert_eq!(6408674341283751728, func0(3119310895, 2332512848)); - assert_eq!(3051318078736446972, func0(2817390882, 1188559902)); - assert_eq!(1972989709924562971, func0(780351859, 4095020889)); - assert_eq!(8048658988730391304, func0(2172392103, 3733992152)); - assert_eq!(2433326231168527560, func0(1191895996, 2314226422)); - assert_eq!(2262298967858370092, func0(1670842444, 1418824969)); - assert_eq!(7803938417708341091, func0(2484042097, 3328979443)); - assert_eq!(7539322157117594696, func0(2333062132, 3731408138)); - assert_eq!(2705973594988999680, func0(1327534528, 2310364144)); - assert_eq!(455498720733482479, func0(494244741, 1523229411)); - assert_eq!(4003355075929112936, func0(2003101608, 2951934137)); - assert_eq!(145619321149625216, func0(105857344, 4119966742)); - assert_eq!(1322726589776158064, func0(1413122850, 1516370232)); - assert_eq!(4281575980138241722, func0(2004761533, 2189949122)); - assert_eq!(16281594880419440, func0(696430160, 28229099)); - assert_eq!(6774353018767117994, func0(3263840733, 3574506962)); - assert_eq!(25908512765000440, func0(23153497, 1167041208)); - assert_eq!(119772304291037529, func0(266315289, 793442625)); - assert_eq!(3876561449444878992, func0(1969783400, 2751698474)); - assert_eq!(235128318431245156, func0(3248079130, 82986442)); - assert_eq!(7492929719824884655, func0(3538012839, 2505512153)); - assert_eq!(55196351724228315, func0(379005127, 241792773)); - assert_eq!(9106944950460834758, func0(2375564262, 4113610993)); - assert_eq!(173999956604907592, func0(2054170120, 234339529)); - assert_eq!(944771168620951036, func0(2376235561, 461253276)); - assert_eq!(6746362651807636992, func0(3252394112, 3554295292)); - assert_eq!(2136327602749129599, func0(1167588285, 1890022299)); - assert_eq!(647259156825987205, func0(1235154857, 667525837)); - assert_eq!(181347495823061120, func0(3044547080, 76587536)); - assert_eq!(1541749083112940234, func0(1401157942, 1204429947)); - assert_eq!(627036784648830094, func0(2556878738, 302767359)); - assert_eq!(1490452281418649367, func0(2951928321, 572172567)); - assert_eq!(2606982472231538634, func0(1947010026, 3413349457)); - assert_eq!(3199162885566252185, func0(1236031391, 2799143243)); - assert_eq!(373308689736776416, func0(1806409304, 442344020)); - assert_eq!(775672694251729568, func0(1011578373, 2049481248)); - assert_eq!(2062439525931452445, func0(974974257, 2337223277)); - assert_eq!(1604548751928611850, func0(4263530758, 984682115)); - assert_eq!(1177305211198487096, func0(1063015708, 3251055618)); - assert_eq!(4092786701660439636, func0(1871663310, 2897198798)); - assert_eq!(601898756794109321, func0(953677933, 1874629781)); - assert_eq!(7182338930138762251, func0(2171635965, 3332266975)); - assert_eq!(6892263101861225161, func0(3129799999, 2215848091)); - assert_eq!(1610879334455702892, func0(1752808402, 1722448070)); - assert_eq!(5954098380190959489, func0(3886730673, 3984357169)); - assert_eq!(1372560992868278988, func0(559705683, 2647445124)); - assert_eq!(2152711712927790556, func0(2482179638, 1016054794)); - assert_eq!(1515787389000267590, func0(2222408362, 726886703)); - assert_eq!(189627500764286944, func0(172005979, 1207000992)); - assert_eq!(4215965669892889695, func0(2346241635, 1935250581)); - assert_eq!(430287207034939114, func0(407571253, 1810727554)); - assert_eq!(1597374713353464392, func0(3729850776, 806227895)); - assert_eq!(1880883457279792240, func0(636980431, 3440218512)); - assert_eq!(19222848170558640, func0(490631236, 116338668)); - assert_eq!(6794589931404934436, func0(3433275655, 3658451724)); - assert_eq!(2437006998208884613, func0(2549287105, 1225503813)); - assert_eq!(836725431393993716, func0(1351722692, 667251213)); - assert_eq!(778971418295057182, func0(2002949919, 973255522)); - assert_eq!(1824537749281412064, func0(777323632, 3780285522)); - assert_eq!(4194917442664844516, func0(3938911532, 1101896703)); - assert_eq!(4594741650119219018, func0(1090257110, 4267525579)); - assert_eq!(2581741321352371963, func0(1367437265, 2784104459)); - assert_eq!(3957829679827338684, func0(4233798023, 1517104100)); - assert_eq!(756845859427052899, func0(504492337, 4088732467)); - assert_eq!(2918282873851881258, func0(2121232373, 4061750210)); - assert_eq!(3654504162672880726, func0(1789347819, 2526872194)); - assert_eq!(2212868445855255812, func0(4150945879, 551586860)); - assert_eq!(3103486486350451421, func0(2066571807, 4084249991)); - assert_eq!(8607273441719426679, func0(2282233179, 3773178821)); - assert_eq!(1156509613521658418, func0(709954394, 2745522693)); - assert_eq!(252077335585159584, func0(189518072, 2094109404)); - assert_eq!(5062083683181171394, func0(3962498385, 3751106146)); - assert_eq!(3010273305490828905, func0(1227337335, 3019767955)); - assert_eq!(574655313858769572, func0(647047805, 1006590612)); - assert_eq!(4569600963837430108, func0(1334926012, 3949705865)); - assert_eq!(2735819427681789776, func0(1204260345, 2571143888)); - assert_eq!(3974865897512847200, func0(1188267424, 3594501727)); - assert_eq!(7310653617202749736, func0(3752244696, 2586733723)); - assert_eq!(2180000542698929556, func0(2282816124, 1064390863)); - assert_eq!(757270560660105761, func0(4098734879, 518883587)); - assert_eq!(1397504678043332472, func0(3680025976, 1007719105)); - assert_eq!(201012468274968121, func0(500330171, 1049640015)); - assert_eq!(1643195608657045224, func0(1211401672, 1361787525)); - assert_eq!(1438226678867312887, func0(582596071, 2487536817)); - assert_eq!(1626403113695771767, func0(1682129547, 1758180149)); - assert_eq!(4967375577310524888, func0(3217776478, 3155765748)); - assert_eq!(1021827422708145586, func0(3455753262, 383685155)); - assert_eq!(1620087579293700270, func0(1436282169, 1333572990)); - assert_eq!(5439846019754306240, func0(2639863084, 2315606544)); - assert_eq!(3676992219044753402, func0(1202592450, 3298529821)); - assert_eq!(295088102467792584, func0(2640416745, 164556168)); - assert_eq!(420015236428626942, func0(1563437339, 270019450)); - assert_eq!(4171570731399781654, func0(1182897686, 4023304321)); - assert_eq!(313930817850152872, func0(3181491466, 197323460)); - assert_eq!(2120144195882588856, func0(3565200957, 729448088)); - assert_eq!(4135138222079530544, func0(2025811824, 2673130909)); - assert_eq!(974728633115924378, func0(1856250370, 565409485)); - assert_eq!(7012021215195861444, func0(2941085754, 4118018426)); - assert_eq!(4588099163818648368, func0(1386294518, 3420932040)); - assert_eq!(8088587275526614880, func0(3032369406, 3434123472)); - assert_eq!(1777061508699445812, func0(2558922366, 884720302)); - assert_eq!(2852489885718700872, func0(3616495155, 2083420856)); - assert_eq!(6039862574505537392, func0(2152668650, 2818357848)); - assert_eq!(2012276748606470592, func0(612330075, 3333688640)); - assert_eq!(4826579945688757288, func0(4076191460, 3387325242)); - assert_eq!(2954762755339698144, func0(2241130016, 1350138927)); - assert_eq!(6281724276907374272, func0(3617096354, 3729266016)); - assert_eq!(3009040870412314168, func0(2003113772, 3875979722)); - assert_eq!(115984953714082292, func0(103828654, 1204044126)); - assert_eq!(1201962710671725270, func0(1502623546, 1599217823)); - assert_eq!(1768363152935762540, func0(671397894, 4210238226)); - assert_eq!(3356298063062783748, func0(3441635541, 1874361620)); - assert_eq!(191715993548523838, func0(432977822, 814281457)); - assert_eq!(6952761006361384478, func0(2897292062, 4122385281)); - assert_eq!(8791194092176411538, func0(2565668835, 3859055694)); - assert_eq!(444859417520974296, func0(459423377, 1262456920)); - assert_eq!(58842996590135436, func0(2325120661, 29264828)); - assert_eq!(1690509597531888352, func0(832106592, 3557011149)); - assert_eq!(3738965538328709322, func0(1376307282, 4116775085)); - assert_eq!(3226502809094447705, func0(1217804729, 2795769569)); - assert_eq!(599870617048294504, func0(1881778757, 924486472)); - assert_eq!(356346683979125708, func0(2800565998, 189463130)); - assert_eq!(339452588688686662, func0(3963108683, 213057330)); - assert_eq!(3137989196724614390, func0(1929097589, 3765384686)); - assert_eq!(413131240504769782, func0(815413578, 908041479)); - assert_eq!(1984222194355718168, func0(4068422040, 780383249)); - assert_eq!(8449006204868051540, func0(3477426044, 3122989471)); - assert_eq!(1003523456326983103, func0(2835039971, 491446709)); - assert_eq!(245177496324409516, func0(1193399302, 219615282)); - assert_eq!(6726709819786389969, func0(3343756681, 3572602009)); - assert_eq!(2129695280915727138, func0(3488392722, 797874265)); - assert_eq!(3711490030387662669, func0(1472834911, 4195298423)); - assert_eq!(2305461512415025554, func0(4116815943, 601761798)); - assert_eq!(1022204836156138048, func0(1383962014, 875871584)); - assert_eq!(6124058566554237137, func0(4026455285, 3995080245)); - assert_eq!(1743522333418554499, func0(1748966301, 1311047063)); - assert_eq!(3828807313491477561, func0(3109604251, 2105581295)); - assert_eq!(6879005257989111578, func0(3466294670, 3687327535)); - assert_eq!(5934422285573512099, func0(3337410757, 3251080607)); - assert_eq!(271632400619818372, func0(2528046633, 121876516)); - assert_eq!(5618458075617706108, func0(2353193135, 2523769668)); - assert_eq!(6032883871238494250, func0(3795834743, 3958843630)); - assert_eq!(4348234047250267664, func0(3329331112, 1382636938)); - assert_eq!(6484124020093919852, func0(3646068676, 3298564363)); - assert_eq!(2162569950879848392, func0(2351508120, 1041802183)); - assert_eq!(1149438359126280378, func0(1593340915, 907279222)); - assert_eq!(4221264735792051800, func0(3473389753, 1567602712)); - assert_eq!(322951549153389311, func0(1848902261, 498627043)); - assert_eq!(2101141419287719338, func0(1937106203, 1149525974)); - assert_eq!(6656628124022890400, func0(3169621577, 2240684704)); - assert_eq!(3865927343168664368, func0(2988653880, 2065372090)); - assert_eq!(3763738094152388512, func0(3941842616, 1349670076)); - assert_eq!(5500238662055357124, func0(3396275652, 3860786625)); - assert_eq!(6051137854919350040, func0(4237055080, 4149691463)); - assert_eq!(8181209536022266231, func0(2922105553, 3697758535)); - assert_eq!(5246041569354373240, func0(3088748393, 2795236536)); - assert_eq!(795539680939686992, func0(660139075, 1434701872)); - assert_eq!(4310391603222254285, func0(1278383903, 4279467703)); - assert_eq!(1356748400436012116, func0(622969790, 2188943934)); - assert_eq!(2862999109564543010, func0(2074366169, 3664002066)); - assert_eq!(8016245604185390044, func0(3938658919, 2833680580)); - assert_eq!(438342136076279696, func0(170664996, 4265799108)); - assert_eq!(511417529224782932, func0(3818108569, 135071924)); - assert_eq!(2594329379751419479, func0(1762016811, 4129238325)); - assert_eq!(166592537077289776, func0(1808881342, 252697000)); - assert_eq!(1844417793911104709, func0(1101557051, 1729092027)); - assert_eq!(2427902568544198179, func0(3276514261, 2086868271)); - assert_eq!(5674302908067269592, func0(3840088572, 3483581978)); - assert_eq!(6098436633657858032, func0(3924213816, 3909043090)); - assert_eq!(8498808094963741067, func0(3640756479, 2815391645)); - assert_eq!(3564628244928381730, func0(1312701182, 3571368499)); - assert_eq!(118440019183248808, func0(105317505, 1231933864)); - assert_eq!(2752380897181354725, func0(2192467037, 1292436377)); - assert_eq!(5318920590358619788, func0(4114099380, 3554377959)); - assert_eq!(1669231363997182072, func0(1032824101, 3987574552)); - assert_eq!(2179232081886795065, func0(907080859, 3083391727)); - assert_eq!(4108623040475691154, func0(2998238671, 1721007446)); - assert_eq!(7919547175547830232, func0(2287146012, 3604055114)); - assert_eq!(1134464629937020271, func0(1082363119, 1048955521)); - assert_eq!(204645315690484142, func0(2239805873, 93118862)); - assert_eq!(2352414531855514652, func0(2524033954, 1265568366)); - assert_eq!(43971730097200738, func0(62947523, 1878762078)); - assert_eq!(5774656200657986464, func0(3327256464, 3323586826)); - assert_eq!(2317851944644201642, func0(3335695027, 2081292550)); - assert_eq!(1410327517683266240, func0(1560002587, 1415285824)); - assert_eq!(2353637492524558322, func0(3830863346, 1858732289)); - assert_eq!(1727916508081186016, func0(1884194576, 2141511406)); - assert_eq!(4545204708067040200, func0(2256338518, 2082339708)); - assert_eq!(1099346732573237091, func0(3492588511, 396506181)); - assert_eq!(4113751652266832971, func0(1964016451, 2293055737)); - assert_eq!(1235532712581488168, func0(1983855406, 1813729692)); - assert_eq!(437969293200789756, func0(1524404398, 470578162)); - assert_eq!(6813520240937145803, func0(3820723415, 4292070597)); - assert_eq!(427683543762119604, func0(2952741726, 157447118)); - assert_eq!(4068006608723057895, func0(3425685375, 1526663337)); - assert_eq!(6235423430617878844, func0(3429980890, 3318616758)); - assert_eq!(1764396741863418496, func0(1875904924, 1255806176)); - assert_eq!(8058874196613276225, func0(2330845361, 3514366961)); - assert_eq!(7670253288968233269, func0(2902298917, 3828438865)); - assert_eq!(7713452682525289398, func0(3450079054, 2478937125)); - assert_eq!(2321762543005257815, func0(3971444723, 1783469149)); - } - - #[test] - fn func0assoc() { - let mut rng = rand::rng(); - for _ in 0..10000 { - let a = rng.next_u64(); - let b = rng.next_u64(); - let c = rng.next_u64(); - assert_eq!(func0(func0(a, b), c), func0(a, func0(b, c))); - } - } - - #[test] - fn func0power() { - let mut rng = rand::rng(); - for _ in 0..10000 { - let a = rng.next_u64(); - - let mut out = 1; - for _ in 0..64 { - out = func0(out, a); - } - - if a.count_ones() % 2 == 0 { - assert_eq!(out, 0); - } else { - assert_eq!(out, 1); - } - } - } - - #[test] - fn func0comm() { - let mut rng = rand::rng(); - for _ in 0..10000 { - let a = rng.next_u64(); - let b = rng.next_u64(); - assert_eq!(func0(a, b), func0(b, a)); - } - } - - #[test] - fn func0linear() { - let mut rng = rand::rng(); - for _ in 0..10000 { - let a = rng.next_u64(); - let b = rng.next_u64(); - let c = rng.next_u64(); - assert_eq!(func0(a ^ b, c), func0(a, c) ^ func0(b, c)); - assert_eq!(func0(a, b ^ c), func0(a, b) ^ func0(a, c)); - } - } - - #[test] - fn func1test() { - assert_eq!(11798831065491430583, func1(3463795518, 1682485247)); - assert_eq!(448858639501164953, func1(960998136, 3442002022)); - assert_eq!(4331216232566681503, func1(351187803, 2185945601)); - assert_eq!(6501943885585729174, func1(3084014163, 912127940)); - assert_eq!(2773586452911195143, func1(3331261599, 832118177)); - assert_eq!(628282543568432452, func1(3183730720, 1526081701)); - assert_eq!(10304735604047663458, func1(2898354542, 3213600473)); - assert_eq!(2315370810697976640, func1(3620175596, 4229168685)); - assert_eq!(11083908256077353281, func1(3101298314, 2777662723)); - assert_eq!(1049535453269404908, func1(697606818, 58376940)); - assert_eq!(9099392518634985681, func1(2281253821, 448345156)); - assert_eq!(11907299657269887144, func1(1944100306, 1005002010)); - assert_eq!(18139734815714175271, func1(1942570708, 3368934703)); - assert_eq!(1062447846124745127, func1(3917100718, 3641676443)); - assert_eq!(417402990515385795, func1(2273104063, 1591049751)); - assert_eq!(4610956232650099465, func1(915009791, 3424846050)); - assert_eq!(4632634587732872395, func1(347267775, 3096301890)); - assert_eq!(8145395893120941012, func1(3292286689, 1839377893)); - assert_eq!(2027385485099641182, func1(450591296, 3078598150)); - assert_eq!(6716486476978567051, func1(2143937553, 3348758988)); - assert_eq!(8198866944461250122, func1(3018854470, 3889192467)); - assert_eq!(11553806339277083673, func1(1539512006, 2081336392)); - assert_eq!(3330621345914728912, func1(3249005184, 2848346678)); - assert_eq!(2017804432676575258, func1(2813387773, 345588747)); - assert_eq!(14595500749209015335, func1(1741339163, 1366337508)); - assert_eq!(10297655684670651358, func1(3726105746, 1592824540)); - assert_eq!(17582718239981798304, func1(944533733, 159392513)); - assert_eq!(3805337247841405538, func1(1736782229, 3675346013)); - assert_eq!(3020134169454795737, func1(1816111867, 1015431153)); - assert_eq!(11261338510846048252, func1(1228907531, 378580379)); - assert_eq!(5050542971941349005, func1(3569690671, 2362083614)); - assert_eq!(9708258165684070599, func1(3477213620, 3564168958)); - assert_eq!(305026462605588943, func1(3774252425, 2324069875)); - assert_eq!(7389524862532086589, func1(4025895326, 3447594450)); - assert_eq!(5501000178805554808, func1(2566538462, 3057776716)); - assert_eq!(5443709636142862360, func1(3467975414, 1642971290)); - assert_eq!(12799044778905477953, func1(395172703, 2859831371)); - assert_eq!(14656588923225874652, func1(3285326579, 1892500115)); - assert_eq!(8008118761937744849, func1(800637690, 3507769133)); - assert_eq!(12124157006316465741, func1(597363944, 4199822201)); - assert_eq!(18047019697308800918, func1(1364679108, 493190167)); - assert_eq!(10571166715192387429, func1(2930362386, 2610687963)); - assert_eq!(1994499305336764829, func1(3567828522, 84275490)); - assert_eq!(7418908198762244633, func1(1037230963, 2717520219)); - assert_eq!(5452796367047227709, func1(2675210197, 1275728616)); - assert_eq!(15473779213248193476, func1(2514441382, 3332966386)); - assert_eq!(15796997115634043006, func1(2369700278, 3199619927)); - assert_eq!(11402557456891929028, func1(3367457877, 3230470763)); - assert_eq!(6835536980872862161, func1(1306487569, 3253890516)); - assert_eq!(11467735224534222612, func1(3943542341, 1681756425)); - assert_eq!(1475101851310807018, func1(2498152871, 2876706900)); - assert_eq!(18179994962409491574, func1(1782315350, 3779560764)); - assert_eq!(992376868483489270, func1(208687741, 3099564482)); - assert_eq!(7496704662186028550, func1(4286428893, 1762584453)); - assert_eq!(3048486413080026187, func1(4220403443, 1302445672)); - assert_eq!(2697521928737745324, func1(3700790948, 1404603133)); - assert_eq!(3776917783462454246, func1(3418006820, 4205067295)); - assert_eq!(7925713370373496634, func1(2634361755, 2433583492)); - assert_eq!(10271614446877954159, func1(1221220233, 1666949297)); - assert_eq!(885713519205033657, func1(1411971418, 1568422082)); - assert_eq!(11700888629561365643, func1(941730219, 105589570)); - assert_eq!(14887164959913630440, func1(137958355, 1591971824)); - assert_eq!(1167079093766082498, func1(1872134170, 427167400)); - assert_eq!(13953609487055404318, func1(3187215651, 4176473865)); - assert_eq!(10692041568399158725, func1(3614611815, 1836680903)); - assert_eq!(11463095029526131574, func1(1701800384, 1448715840)); - assert_eq!(4547087054263210229, func1(3552467688, 2656183881)); - assert_eq!(5377035043274396886, func1(2380145620, 154837088)); - assert_eq!(14584488316805966019, func1(3768076343, 3890514226)); - assert_eq!(16011234068864860434, func1(702062132, 4202662539)); - assert_eq!(9220688519894226035, func1(3898276141, 947574382)); - assert_eq!(14497053175144133245, func1(3963535759, 3409647466)); - assert_eq!(17732239296035734458, func1(2791478715, 904408856)); - assert_eq!(2503452673785104063, func1(4004260463, 1275381366)); - assert_eq!(15253234983278921033, func1(2779315586, 2488033918)); - } } \ No newline at end of file