diff --git a/Algorithms Specialization/Part 3/clustering/src/lib.rs b/Algorithms Specialization/Part 3/clustering/src/lib.rs index 729f8f2..a4781b7 100644 --- a/Algorithms Specialization/Part 3/clustering/src/lib.rs +++ b/Algorithms Specialization/Part 3/clustering/src/lib.rs @@ -55,6 +55,12 @@ pub fn max_weight(graph: &G) -> u32 { *graph.edge_weights().max().unwrap_or(&0) } +fn test(){ + loop { + a= 123; + } +} + pub fn read_file(path: &str) -> Result> { let file = std::fs::read_to_string(path)?; let mut lines = file.lines(); diff --git a/Algorithms Specialization/Part 3/mwis/Cargo.lock b/Algorithms Specialization/Part 3/mwis/Cargo.lock new file mode 100644 index 0000000..efcf987 --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "mwis" +version = "0.1.0" diff --git a/Algorithms Specialization/Part 3/mwis/Cargo.toml b/Algorithms Specialization/Part 3/mwis/Cargo.toml new file mode 100644 index 0000000..f3cfc9f --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "mwis" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/Algorithms Specialization/Part 3/mwis/input_random_10_40.txt b/Algorithms Specialization/Part 3/mwis/input_random_10_40.txt new file mode 100644 index 0000000..32d92c9 --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/input_random_10_40.txt @@ -0,0 +1,41 @@ +40 +1249 +257 +465 +1300 +282 +271 +1518 +276 +858 +635 +938 +1335 +1326 +355 +96 +1521 +293 +1031 +1104 +91 +759 +1099 +894 +975 +848 +1476 +351 +341 +920 +1239 +41 +1037 +1340 +843 +138 +1282 +1031 +1347 +910 +168 diff --git a/Algorithms Specialization/Part 3/mwis/input_random_11_40.txt b/Algorithms Specialization/Part 3/mwis/input_random_11_40.txt new file mode 100644 index 0000000..98b8cbe --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/input_random_11_40.txt @@ -0,0 +1,41 @@ +40 +1437 +212 +1479 +1600 +219 +210 +984 +46 +47 +879 +664 +222 +103 +1089 +1266 +781 +1157 +777 +542 +716 +1406 +326 +444 +1201 +1119 +578 +1216 +1507 +439 +725 +290 +1018 +1002 +663 +1471 +208 +711 +1302 +401 +1142 diff --git a/Algorithms Specialization/Part 3/mwis/input_random_12_40.txt b/Algorithms Specialization/Part 3/mwis/input_random_12_40.txt new file mode 100644 index 0000000..e75254e --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/input_random_12_40.txt @@ -0,0 +1,41 @@ +40 +744 +1293 +131 +1434 +1005 +163 +458 +800 +364 +1437 +455 +421 +378 +1118 +980 +402 +949 +1110 +913 +453 +233 +1154 +1034 +179 +444 +1384 +1420 +174 +742 +1355 +1080 +1193 +679 +1146 +66 +881 +1433 +1448 +53 +1295 diff --git a/Algorithms Specialization/Part 3/mwis/input_random_36_2000.txt b/Algorithms Specialization/Part 3/mwis/input_random_36_2000.txt new file mode 100644 index 0000000..8776aa4 --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/input_random_36_2000.txt @@ -0,0 +1,2001 @@ +2000 +144388 +2085966 +778350 +2796914 +1560236 +1629736 +3588984 +2428460 +1283119 +2134413 +1295159 +1620644 +3742826 +2292864 +912752 +1261708 +2139105 +3349780 +2298688 +3741609 +3723672 +3221274 +1582229 +3405768 +647621 +2416921 +3861701 +249514 +2105592 +2551838 +947381 +3359253 +2125644 +694769 +564385 +1535828 +1471603 +1133758 +3557263 +861426 +2185131 +2565433 +2124742 +2603370 +2645098 +1354350 +924682 +1927178 +3335076 +3288657 +2933460 +36859 +3879126 +2900820 +990095 +3983908 +955397 +2883192 +1920495 +3969191 +3386049 +82647 +1143904 +3380490 +864364 +3194741 +3843508 +277811 +1276852 +62374 +1758201 +2524639 +1040071 +3019032 +2603745 +2891514 +2031355 +2515312 +361734 +3134110 +330809 +1484193 +1121234 +2434182 +881960 +3459484 +707823 +843129 +2214039 +2476639 +3614141 +1286942 +2003660 +3817649 +2589538 +1162862 +649535 +1955744 +1450170 +3381131 +294019 +654559 +2826910 +3954334 +2328982 +1588082 +682736 +2459623 +752565 +3900362 +3853658 +2799976 +665549 +2386574 +255991 +851587 +1078620 +1108369 +3874767 +521909 +1670485 +724213 +278661 +2633943 +2594445 +2177962 +275695 +1622049 +3427046 +3141733 +3472449 +1922550 +742062 +2379055 +3676069 +249086 +2976553 +692099 +3798809 +1567654 +3391741 +1829823 +2427619 +1600012 +578059 +2938160 +2346609 +397599 +442574 +2035974 +2202629 +3913232 +463798 +889770 +121328 +2757511 +1732106 +1550627 +529549 +3007252 +3873865 +3660951 +2783469 +1712253 +1589334 +710167 +1614987 +523753 +2600373 +3108275 +2291995 +1932463 +3042418 +3123026 +3137667 +486169 +3425335 +3772509 +1066366 +1838961 +3718268 +1054945 +1011750 +2495954 +1312235 +2830348 +2320436 +2074502 +126100 +1197220 +1246411 +3322886 +1955107 +2063761 +3042537 +462886 +598813 +1323521 +835796 +1706082 +2185126 +836212 +1613629 +475482 +1190278 +1188864 +3009687 +3611294 +1171692 +2263078 +767131 +2839425 +695755 +2568124 +1392562 +1483249 +2672924 +9639 +1997033 +2717731 +1249275 +3569695 +1565777 +2185738 +1067622 +2836731 +1518373 +2690708 +597183 +3646244 +2927636 +2150273 +1310152 +2705246 +2115056 +848289 +1014719 +3819881 +787457 +1148214 +3775330 +136028 +2619636 +1894130 +2327294 +1030953 +3561112 +3674490 +3559663 +3779457 +1813104 +1536397 +3462256 +2593765 +1323351 +661790 +1456818 +266936 +3099503 +155904 +2031138 +548019 +519624 +552633 +1215746 +3544670 +325967 +2671555 +3348370 +2822434 +1047103 +3840948 +1465171 +825990 +2429680 +2908530 +1215201 +1127772 +132728 +3994688 +1810104 +3787207 +3658311 +2231948 +3147893 +340055 +721004 +3595923 +1981516 +119174 +3384222 +1974050 +2871074 +3824690 +897110 +1584537 +390133 +823499 +3410074 +172395 +3306182 +941595 +1213446 +3398417 +2499157 +2593224 +117714 +2413801 +1051822 +2913448 +1876948 +258633 +3051130 +512667 +111972 +639321 +2478396 +2827365 +2732106 +3780690 +595199 +55932 +1475414 +444599 +3523247 +198676 +310971 +3767135 +3710848 +1561638 +2254271 +3305554 +1464974 +2098418 +2301825 +811733 +2864092 +3915548 +3772226 +2141313 +1108072 +3607974 +3975500 +3789031 +1856550 +91896 +1703561 +2496793 +1406423 +84191 +462386 +60001 +1197573 +1764099 +2500979 +1106301 +1102503 +1825908 +2369733 +2939117 +2344042 +3001941 +1807555 +2169474 +3585791 +3436803 +2766190 +759363 +843206 +3782515 +1105802 +1943148 +3177078 +101180 +165516 +1997840 +3929631 +6123 +2007994 +656525 +2595330 +1377073 +241665 +500973 +3574973 +3484684 +23062 +1532458 +1590523 +1671961 +3540756 +2404485 +1258241 +1871581 +3799251 +1318058 +1587327 +855998 +3100985 +3560695 +3688076 +3374778 +1420729 +1792324 +2468406 +1414516 +3019942 +569236 +2103956 +1833599 +908740 +1494428 +400973 +583890 +523897 +1998480 +288168 +1302789 +753368 +2141826 +483063 +1908715 +2375150 +1248340 +3109226 +1780207 +1731732 +2459861 +111590 +3916141 +2371073 +694607 +1563971 +2630053 +1438143 +3730219 +3863869 +3243019 +2636132 +727370 +3000131 +2858166 +3198503 +1510895 +2010000 +2144713 +345445 +3411882 +22406 +1314639 +1427702 +2626306 +1699001 +2515418 +3266162 +1861610 +1725232 +1205108 +2663204 +3120248 +3448456 +2303933 +3750080 +71645 +117382 +974738 +1402256 +507413 +1739385 +2890500 +1899170 +3707478 +3489157 +3013299 +1737586 +2359648 +3133202 +3667109 +1663191 +1634705 +2307604 +254654 +3395067 +1014550 +311924 +3947469 +3615875 +1382661 +612772 +208807 +1944087 +1760297 +1370435 +579798 +1460828 +1597110 +763759 +2287327 +1300960 +47878 +1443629 +1544056 +2613179 +1596251 +339330 +93926 +3787777 +2361621 +1254234 +3223701 +3753245 +1039098 +2847371 +2371989 +3398031 +2758630 +77270 +3103278 +1566098 +3412543 +1294428 +3766759 +657716 +1993867 +866697 +915168 +2511209 +551261 +1102147 +2368301 +1082007 +2731682 +346173 +3672882 +508958 +3498973 +454671 +301216 +1889832 +3029258 +3221010 +2557448 +1083353 +2609000 +3632940 +3698165 +800495 +2295377 +2020862 +1005281 +1065071 +3612494 +1810068 +2999393 +625741 +2955817 +3441944 +165166 +1898644 +3596563 +2914031 +3269429 +497239 +3788553 +2705871 +515853 +2857781 +1130120 +40692 +3667237 +1233529 +3067760 +2271800 +3580995 +2701044 +2578393 +2794957 +2964456 +3653030 +1657789 +3913956 +846609 +3113317 +161083 +2499556 +2615717 +3198800 +2981255 +3754186 +1377207 +554595 +3495680 +1120728 +888666 +3748180 +2813184 +3365677 +2397 +233409 +2889314 +290828 +2991260 +3557707 +3968785 +2224102 +2335851 +1679568 +905053 +3220023 +325195 +1991507 +1070657 +3458657 +3906838 +219463 +754015 +2577146 +2059127 +2144431 +14271 +3044310 +2799718 +1690198 +3049680 +3120382 +830951 +1966424 +4404 +2556085 +3246345 +1705968 +2496762 +3108423 +90577 +1832038 +635766 +3991929 +2651690 +1597816 +3491798 +1855850 +575720 +1702662 +2303532 +2491705 +7004 +3415677 +1643852 +1494036 +1895476 +3261086 +3823898 +3367997 +958735 +548906 +959283 +682445 +2451692 +3210015 +1301572 +1426760 +3448595 +815092 +3022745 +3810631 +978751 +3822032 +2717456 +3229074 +3853307 +3654374 +48453 +1157077 +1109676 +2294923 +351961 +1727792 +2070865 +3370399 +1143492 +64861 +2440835 +2673379 +2559933 +1901335 +2665050 +2516622 +2957110 +3149205 +2809308 +3264035 +2572852 +1004542 +2711623 +1212790 +3485625 +3310136 +392228 +3401287 +71066 +1420400 +123875 +1921329 +2083821 +1900901 +1199414 +3470478 +669837 +2437595 +1209838 +3619378 +1608852 +1808863 +2360452 +1457172 +2665751 +1484338 +89049 +720972 +1023077 +729608 +2090692 +1761834 +2586469 +467500 +1321398 +2590124 +3970400 +2403637 +2218032 +59814 +2981444 +1939463 +1872423 +1750172 +2576103 +3413074 +3396919 +3869126 +1066936 +1354563 +1748678 +1366172 +1528908 +2049088 +3251621 +2996117 +1716043 +1371797 +2233922 +1598971 +465367 +3417059 +3544480 +1897671 +2986501 +1838644 +2875800 +2671559 +2542696 +1736855 +3648388 +811524 +2260583 +1355910 +2259573 +2696844 +86859 +144175 +778524 +279051 +3995813 +447780 +1944538 +2729611 +1937473 +311236 +1940733 +3126483 +3173639 +2158201 +3848383 +117614 +1113375 +1218046 +1523870 +1446015 +3513388 +1542259 +2751565 +226970 +3204217 +2613277 +2732290 +1820507 +3682726 +3322901 +618547 +74946 +445164 +2388926 +1729449 +1686238 +3670844 +1818587 +3643947 +968397 +2756729 +1564975 +65098 +1497752 +2110560 +1770968 +3939651 +3274639 +2125588 +3434674 +1929519 +3418230 +2152646 +3455637 +3326323 +2860679 +3166794 +3019912 +1901902 +2858122 +2232075 +596573 +1962187 +3793949 +267840 +878865 +477659 +3367646 +2361539 +3179001 +695456 +3818830 +1609954 +3087471 +1761662 +60118 +1356560 +1148428 +1989848 +1358836 +3997298 +1373771 +3885325 +1131506 +1854539 +1955107 +2362226 +2216384 +1886651 +2097405 +1794667 +1016288 +567030 +2955322 +3718465 +916389 +3002967 +2787015 +2707601 +1143253 +567923 +2225127 +649100 +2683712 +3197748 +2822820 +2139997 +979269 +3700025 +37428 +1737903 +1071665 +917030 +2811340 +2188936 +3760691 +2762188 +21168 +3558430 +3943222 +44487 +2780377 +1589661 +2558725 +3959798 +432505 +3297537 +1819522 +3897896 +2360969 +1399423 +2099152 +336061 +3463259 +3326826 +647190 +1028987 +3345572 +1192308 +1438826 +3794645 +3827487 +2376760 +2179542 +2738450 +1639511 +3686876 +1767563 +2718290 +2669121 +2530108 +3105186 +3189705 +3920583 +3310000 +113491 +281289 +1501363 +3327221 +2963940 +3866656 +3691605 +1719179 +2284742 +302439 +2572295 +720689 +916902 +1391113 +828503 +1686600 +2052068 +2383585 +445236 +3337104 +3800389 +2250896 +2717706 +1266223 +2958078 +1538383 +3724669 +3279467 +1809656 +165292 +504156 +3695549 +1297564 +2577431 +2124624 +1347452 +3850902 +3034283 +2715322 +1664833 +621915 +637214 +2340911 +777717 +1749840 +2622646 +3166113 +827038 +3666006 +1364377 +251795 +3223850 +1030346 +3149381 +3231814 +2952768 +205889 +3021457 +3312401 +2859966 +1439861 +3280137 +417737 +3017270 +3712769 +1767081 +3053975 +3918746 +1350615 +2034255 +489431 +2917744 +2287460 +1524421 +113281 +3384674 +3353417 +2195495 +1501959 +814659 +518617 +3431256 +1898517 +587008 +2045166 +542537 +2009259 +2891215 +3129007 +1439676 +1915667 +569616 +2325968 +3204669 +1253739 +958171 +1887331 +3514893 +1346712 +3422822 +244414 +3896489 +2538124 +2653526 +3318996 +2765101 +2015880 +411675 +2115250 +2582720 +2485431 +510258 +1133207 +493811 +3310700 +2455799 +961760 +3214148 +1520628 +740269 +3573064 +1706542 +3618099 +2125977 +2364230 +1644755 +340371 +3509325 +2889183 +1437197 +2113102 +1247712 +3122321 +841327 +3173135 +1977196 +1993744 +3741826 +859388 +1272695 +2501753 +970738 +2292528 +3936364 +2705813 +585153 +2138094 +386208 +2086653 +769178 +165211 +2634163 +744021 +3791353 +1250837 +2790370 +3598134 +2983999 +1682502 +3460884 +3549216 +2820476 +764681 +2289081 +1371981 +2600659 +2077054 +2798588 +3835228 +3790889 +3614546 +3390605 +1660473 +1392378 +2069548 +3715837 +3613495 +3146035 +2773624 +622705 +1436994 +2614553 +3311276 +2687344 +1800377 +646875 +325881 +2556959 +2970434 +3069218 +1906732 +239331 +2227713 +364592 +1931476 +2136235 +631096 +2726845 +1317618 +2834685 +2603198 +945733 +3385110 +1747939 +3810979 +2004702 +2046342 +3612185 +268194 +3612782 +46246 +1122409 +1139239 +1207561 +3921025 +1879017 +3303541 +1092678 +1477487 +2065564 +368635 +584416 +1323536 +2006231 +343302 +303758 +204841 +1742445 +3791514 +2728779 +390059 +99173 +44102 +384775 +3405095 +1948085 +3680649 +1241553 +472886 +1168157 +3021119 +171637 +2060023 +267986 +3131498 +3638493 +846521 +2656195 +2723 +3609223 +186431 +871345 +28226 +1980131 +2678522 +3321913 +3461778 +757841 +260091 +339932 +1907648 +2246628 +3983662 +3242535 +733776 +1495017 +1071764 +3056940 +23919 +3541753 +1848328 +1021507 +1299619 +2918437 +382148 +2036585 +2746117 +1917790 +738191 +2367811 +2132294 +2760828 +2369515 +2045190 +1172279 +489008 +27755 +3560292 +2071607 +857958 +910573 +1964292 +3209878 +669126 +3618452 +2304285 +176496 +1493791 +2424696 +1326436 +683424 +1059389 +3208132 +3386349 +736217 +2260378 +1140651 +1698226 +2725018 +110112 +2329681 +222328 +607418 +595824 +3447705 +3523157 +1762137 +1329030 +2345666 +723256 +3285198 +1042218 +311049 +2147318 +2016133 +1699332 +3898728 +335896 +3345183 +2348292 +1402849 +638410 +2582792 +1162690 +1333908 +950892 +2146163 +793425 +600052 +1541746 +2054462 +37891 +2609453 +3798195 +536312 +2900340 +759620 +3725104 +2359219 +1296084 +1249849 +1477138 +3239660 +2987578 +1985803 +3776653 +2204923 +1424076 +1750793 +1622925 +1637526 +3897778 +2386983 +321411 +2733026 +3043567 +1347807 +1765459 +3445617 +2963377 +1656998 +3631086 +1207422 +3513866 +286133 +2362394 +9083 +544524 +880608 +2301625 +1313628 +2388982 +2251105 +3232401 +2001700 +2410948 +3683020 +893228 +2981555 +2575222 +1980018 +3013345 +2529417 +3035225 +3533611 +2258919 +392124 +1662427 +3495441 +2302117 +1058639 +1815872 +294196 +3873738 +3354981 +2609786 +1092627 +1236236 +3270040 +265356 +1186379 +1404904 +213064 +1034990 +1657819 +3921967 +878620 +822638 +421416 +1590009 +3378528 +795029 +2287030 +3616860 +1576294 +1738405 +2797216 +3037015 +692672 +9649 +471831 +3731286 +1227671 +1917469 +2577498 +822694 +3989509 +3791946 +2716210 +2299328 +522930 +3873923 +2545248 +631096 +1015641 +3871821 +1276062 +2673757 +3080698 +50566 +3454904 +1970552 +2268071 +2274636 +3005267 +2573136 +3375738 +775825 +1628362 +3209929 +189296 +2567307 +3446925 +2070246 +292433 +492589 +2989853 +64830 +1939959 +795712 +3533280 +1406507 +3693340 +708335 +2334144 +692660 +1110525 +464689 +3068993 +338653 +1552541 +3475594 +2777290 +1082267 +1829479 +616370 +2777639 +821178 +425027 +2779209 +3232412 +2159294 +3700030 +3337614 +458992 +3241787 +3399050 +933156 +1854727 +2745255 +3079511 +1122506 +575085 +3614075 +1806537 +2244176 +1220342 +748041 +2150571 +2042022 +186780 +3168435 +2536173 +3400537 +1931142 +715237 +19312 +110437 +306921 +2339361 +2613410 +3817739 +2522595 +1363842 +647659 +1280341 +2807336 +144142 +1373613 +2704111 +2372527 +2097618 +3568324 +825397 +793311 +3235501 +3569822 +1996686 +3377162 +698946 +1340798 +1372183 +3135716 +3599974 +1509796 +184258 +2087381 +3280858 +3166674 +3884023 +149796 +2707189 +1055018 +2582842 +1046437 +2037815 +3106742 +2590322 +2201054 +1740785 +1119689 +2374012 +2482220 +1099007 +3734030 +3345254 +3527802 +30293 +3724183 +3063174 +588760 +467471 +1722646 +325546 +1279864 +3830291 +3553615 +2024405 +691200 +1591213 +1525471 +1383613 +1294221 +3024381 +3439021 +2540429 +133920 +3993540 +1469820 +3607354 +2861706 +2238795 +688731 +2848985 +948456 +3501854 +623095 +2668785 +1574582 +448933 +2981215 +368904 +3145563 +1320263 +144670 +3588022 +3116814 +1848570 +2899206 +3731068 +1347121 +3799637 +2673457 +2482954 +1813357 +1703770 +640950 +951813 +1331573 +1165822 +713559 +2311798 +844909 +2632375 +591655 +2704094 +145175 +3418514 +2539186 +1853728 +2745916 +3348070 +1583782 +416986 +740056 +3806533 +2922612 +2579643 +2503802 +2007931 +3626444 +2895329 +3393226 +2224359 +1939595 +2294534 +92705 +2391550 +2149631 +2371780 +2745445 +1539171 +1000766 +3686700 +3688253 +2710702 +1968460 +2485573 +3341948 +1183716 +3595701 +1801813 +3058304 +2846412 +1955193 +3723368 +1490901 +604044 +2187926 +407851 +3391323 +2033487 +160036 +202579 +1826689 +1573091 +1895907 +3009219 +128178 +1069070 +322190 +2949330 +1124057 +213521 +1027398 +1674154 +1014566 +720053 +1243348 +2405082 +532065 +2757452 +309732 +303531 +741838 +202184 +2512817 +810929 +167100 +2636603 +1831472 +3834831 +1911229 +1125372 +1147551 +2094635 +2111100 +1775892 +478361 +246960 +3914885 +3568405 +1742105 +2166972 +621439 +1149990 +222597 +2894855 +3297769 +3431358 +1275444 +1274613 +288738 +985756 +2684843 +877361 +2954476 +2826397 +1629109 +1014385 +1735070 +2392957 +3159637 +2690081 +1828507 +1760505 +1740003 +2517665 +1964652 +2623387 +633731 +1341763 +2439558 +1611897 +3506656 +1007942 +879536 +1697333 +284834 +1401197 +718283 +688998 +451440 +473674 +3690575 +3182804 +2511347 +3633936 +2332963 +1550169 +3603523 +2566591 +450166 +290670 +962831 +1916563 +860980 +3018352 +2911695 +1897916 +3855382 +3666690 +3444778 +3523375 +1122646 +3072029 +2323745 +1767505 +2414038 +1918248 +1766018 +1563954 +3834135 +918080 +3173925 +460582 +3210845 +2747148 +2883203 +989910 +2834149 +2196078 +3080625 +486008 +2220230 +2534241 +1115617 +3069258 +2973070 +3287548 +2409074 +818205 +1283100 +280010 +1520683 +2544772 +955699 +1279438 +1083503 +1288973 +1694842 +2723494 +1586826 +2003628 +1414263 +2323247 +1454559 +3242012 +3352991 +637621 +925572 +1199702 +3891454 +3931797 +3493739 +3756379 +1594428 +1006785 +2097690 +203918 +1302508 +3660292 +466760 +1730361 +2462435 +766785 +478796 +2604449 +1508700 +339893 +3547772 +3552221 +3037692 +1583568 +3261092 +3947188 +3215877 +1294706 +172480 +966713 +3391784 +613620 +2603450 +3067129 +3669977 +3228639 +2747667 +3206744 +2410114 +1686479 +177881 +659344 +1889305 +122987 +2475039 +2224230 +2539275 +2570057 +2169564 +3007910 +2262458 +2052406 +3372883 +436990 +149022 +1704984 +1913933 +3739053 +192811 +3282755 +1592855 +388657 +3803042 +1142335 +2123992 +520848 +372672 +3248089 +1680231 +2500623 +2836177 +3000570 +2038775 +926678 +3475033 +1429632 +3510980 +1514375 +1264867 +3243211 +3454732 +2451506 +24033 +1409711 +864430 +3013162 +804784 +2415867 +445633 +3685810 +2277972 +3303293 +1525264 +3992498 +3464486 +2179678 +2053895 +2755518 +2251006 +1800426 +279472 +1729195 +3446947 +2241245 +3547552 +2004709 +3731620 +474234 +3313739 +1134577 +3950471 +920410 +914417 +392760 +3825387 +1397578 +135202 +3446352 +2508896 +3863296 +825293 +2161995 +1984495 +553905 +1527662 +3608416 +2442364 +461080 +2324008 +1575871 +3819007 +467478 +2595392 +2806158 +1695012 +2953182 +1898688 +1593827 +3228818 +3366921 +3019563 +1162371 +30424 +1733562 +940301 +3510489 +1321657 +3248966 +196857 +1227408 +3590439 +356348 +2744472 +303781 +34409 +3858618 +2112874 +49637 +1291832 +14810 +3728018 +1551469 +852365 +1886019 +3966386 +1567387 +2489300 +849795 +653848 +1731228 +3180974 +1892202 +3674737 +2224683 +1155951 +2284398 +76220 +727038 +3006497 +209847 +1738284 +2256675 +869616 +3119484 +3446595 +1825817 +862924 +786916 +3056005 +3320345 +223959 +1219174 +1848446 +546669 +2476210 +3534440 +2739453 +1099301 +323767 +2348814 +2271231 +3792627 +3242882 +1200214 +2294322 +1463923 +1766880 +3625766 +2051182 +1106956 +486452 +1815618 +1369532 +1976448 +913075 +304908 +1953895 +1581828 +2533860 +2210924 +1874789 +3066670 +2105246 +3598056 +2449274 +3714838 +2906665 +3581673 +2156590 +3470619 +1648033 +3353917 +657048 +3373164 +2379834 +3705994 +1008726 +1438655 +2816751 +1209946 +892367 +3572735 +480533 +2185033 +30257 +2824889 +3689021 +2172789 +2781731 +650524 +3563952 +1163062 +2107576 +3376000 +2120975 +25131 +2152913 +1475700 diff --git a/Algorithms Specialization/Part 3/mwis/input_random_37_4000.txt b/Algorithms Specialization/Part 3/mwis/input_random_37_4000.txt new file mode 100644 index 0000000..2499206 --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/input_random_37_4000.txt @@ -0,0 +1,4001 @@ +4000 +1085753 +11270846 +10569790 +29719 +5892719 +6348271 +15346822 +4916661 +10955689 +14819825 +11455870 +5460115 +339292 +14056024 +985990 +6243556 +2034911 +3945376 +12616669 +9174972 +3687976 +15310801 +2554130 +15748438 +15254986 +4591207 +5918231 +4460514 +10719997 +12159325 +15410133 +3597438 +9630580 +13852917 +12485022 +14212424 +15403463 +690108 +3182511 +5232443 +11267897 +12599835 +8425769 +57864 +14124598 +6381301 +15683159 +587829 +10812817 +5171573 +14933619 +12910801 +9940939 +3888921 +44903 +4317640 +10251045 +3849570 +15763458 +14895630 +13347842 +268553 +8870406 +9898304 +985264 +568465 +8907229 +8396682 +2223585 +3924417 +2714478 +13111785 +5101440 +3961667 +15118769 +14724001 +12004609 +4018564 +12195315 +2755305 +1100105 +6056919 +883769 +1069402 +5100107 +8361469 +15561696 +15458673 +2087619 +5710655 +4419550 +12046336 +7763337 +3362220 +13483345 +13310927 +10670671 +1777589 +7389839 +5480568 +9989987 +7424500 +15176244 +13535473 +5124445 +12005268 +7310092 +9639090 +921818 +8251003 +1844287 +4186478 +11399251 +1210639 +15925229 +12877642 +3891792 +7800987 +1198235 +5030320 +1422186 +12097722 +11457233 +12807445 +2443443 +15296866 +8172627 +10771190 +11202831 +2851456 +13322067 +7641926 +12295836 +14547906 +5894426 +4109533 +6849636 +15506831 +3932778 +2527014 +8673932 +11022256 +4577757 +13878065 +10475101 +8233569 +4543167 +15246660 +12092585 +14877086 +9643000 +6959380 +8004239 +1706813 +12598703 +14540907 +11552485 +8373262 +2528150 +9063200 +15410261 +13554459 +5698011 +14041088 +5480809 +15995258 +9825534 +9880326 +1666433 +14199501 +5069008 +8154287 +12159870 +12230481 +11620629 +1213173 +6308131 +1868758 +11752983 +2107738 +3532434 +6245249 +4595382 +12689379 +4235023 +6309400 +4526490 +10565022 +1152028 +11595964 +15346503 +11964508 +9721927 +12942094 +2855523 +5599205 +6733970 +5275614 +3110006 +9193801 +14399370 +3347141 +10964894 +4902653 +3627316 +4055275 +12264068 +11766513 +14480139 +6669463 +5688046 +1261383 +4498633 +12150209 +13026396 +9231957 +7650843 +12477400 +3921162 +1700435 +3176538 +4608364 +13249524 +5284208 +10429901 +13645306 +9234551 +14028961 +9250557 +13652970 +5341193 +15078941 +11761598 +5464357 +4436265 +13238982 +846633 +7604394 +5472218 +8546586 +1367954 +14694060 +3501837 +10258968 +6476630 +11248444 +14425011 +2488760 +14684028 +11673435 +15299901 +6429577 +6712003 +13138104 +3173157 +10664281 +4152537 +5800534 +1570743 +3799799 +11556358 +8786256 +8952463 +12875441 +12673066 +5990394 +4730548 +8011859 +14783536 +9716775 +15495985 +15021953 +6714753 +2995722 +2090016 +9810059 +3325409 +5425662 +3202049 +14952237 +13594724 +6150719 +2582622 +1101511 +6990420 +4844891 +7193314 +2551186 +2994055 +8431109 +1622488 +12947577 +4606509 +7028295 +13155116 +15516043 +4709958 +5905768 +6508798 +7726314 +12570291 +11416807 +11396334 +4080819 +12175996 +8189613 +6801881 +4055912 +13979032 +4410289 +5178791 +2718218 +6125371 +13471455 +11146723 +14694145 +8350528 +15281107 +6783826 +1200098 +5942361 +8964146 +12717296 +9981477 +5197071 +11799580 +12298153 +8657548 +11723179 +11571340 +2287675 +8383897 +15885841 +3890818 +14976683 +14026255 +706772 +7166188 +22145 +2169862 +11613418 +944001 +7164690 +11846579 +2659872 +239141 +8075234 +340232 +11818959 +4006303 +4023428 +3089680 +15062453 +2789886 +14624108 +3625749 +5047614 +13381180 +15968146 +1815215 +9041503 +14533538 +6054036 +4371857 +13107551 +6268306 +14314203 +1624774 +2858158 +1158444 +5110295 +5253684 +6043290 +10086053 +2952683 +4719423 +9293957 +9841440 +7651278 +15500210 +10196727 +5474087 +9804640 +4270649 +13867430 +13780738 +2688307 +7390849 +623662 +386669 +10434774 +12960996 +8746177 +9575588 +11299154 +4672346 +6992854 +9436437 +10571105 +12304243 +4938462 +4300025 +326682 +3441690 +1153782 +5873249 +3297401 +11732140 +7641186 +10115984 +8201434 +13152819 +13010411 +2608080 +12790038 +13174414 +12357518 +13873287 +7021560 +13484060 +13106888 +13981204 +14861566 +5203469 +6117063 +11855736 +2390456 +14566208 +12865845 +5140828 +11083749 +11352406 +6147327 +8080527 +15712816 +12416709 +7472374 +11860691 +10031964 +12857852 +5578246 +13831429 +12260519 +6025535 +1600930 +5500046 +13395098 +5923206 +6584358 +5411742 +8470087 +13939145 +1734616 +15335851 +14086768 +12958401 +7773149 +14298970 +10374213 +5494602 +3842990 +9342676 +5248404 +8847795 +14173187 +14224037 +1684751 +1566274 +10606414 +15492554 +9022545 +13774338 +10309397 +9688325 +5734961 +8707503 +1588885 +14432246 +14056155 +955298 +12248393 +3543316 +1452006 +13673162 +13218991 +3392107 +13771433 +13832252 +8013103 +6762118 +13831725 +13564415 +3112585 +5355290 +13912613 +12131231 +15253856 +2461567 +12657858 +7177364 +1626521 +10833671 +13118969 +4935338 +8945234 +14341405 +12177072 +15604963 +9211048 +3827406 +5798175 +10702914 +14853124 +6204675 +11073942 +10934703 +14539383 +4128225 +8106745 +1531123 +2234072 +6089391 +9804250 +4481095 +8889105 +15311219 +4184165 +8218609 +6948299 +508871 +13067858 +7254240 +9416329 +8132658 +11592277 +13148232 +9009044 +13308227 +4592546 +13655279 +288959 +10310162 +4295196 +2292293 +11161746 +9098161 +4077457 +10182950 +5607314 +11922798 +10723354 +11490611 +9156748 +11659861 +4137269 +1373153 +12416942 +9347394 +2890409 +13039161 +8080552 +11310341 +3086161 +5511785 +15802723 +2238012 +5389412 +5571888 +12852654 +1638650 +13960275 +12125129 +1542357 +8778860 +6185719 +707757 +2402061 +14872392 +1543957 +3356820 +4526193 +7246468 +9779664 +1259612 +8030242 +9655917 +12321660 +4300886 +8439860 +12041977 +696048 +5102145 +6560075 +12755734 +7139326 +7758850 +4831815 +4159829 +1295912 +9467884 +14058215 +15763517 +2962794 +14254471 +13176760 +8868996 +4949523 +3202122 +6575322 +3841302 +13019361 +10983827 +9862671 +522440 +10909370 +15594102 +3233943 +6063904 +11174032 +14473199 +572617 +10857835 +6899005 +5289222 +1447199 +6215756 +222404 +10031030 +1379023 +6197472 +10271795 +9789783 +9743747 +5425446 +358226 +9499240 +6851287 +3253308 +3790309 +2928478 +8422734 +1279944 +7703964 +3342240 +10587122 +14617741 +791517 +11539331 +5933872 +3652761 +7781719 +6650202 +146894 +14343094 +14983416 +1919784 +4902951 +7228720 +9399835 +14174592 +3201204 +6575056 +1835184 +12807360 +3602103 +3605071 +11685111 +7692391 +2349864 +5389394 +9080253 +11304799 +1723168 +978053 +14893564 +12341946 +10741206 +10409675 +3122515 +8623318 +1729773 +14017232 +7411775 +7334633 +1128955 +14007855 +3615545 +6269835 +1117617 +7187759 +11879199 +3305038 +11370461 +4069478 +15306832 +15125285 +12460236 +9880549 +2525935 +9912768 +12708547 +11590624 +9588192 +11154532 +3465460 +13618214 +1565939 +3568968 +15738168 +14320464 +511020 +3984824 +7963545 +1763365 +10114321 +2944535 +13926699 +13759385 +13911541 +9298350 +11476886 +8380165 +2165546 +6337772 +2616259 +9913942 +15314292 +2378508 +9732699 +6739982 +3813701 +15672503 +3936608 +2426462 +3240830 +12668368 +14215484 +13858730 +9208102 +1468605 +6926599 +14844465 +1466975 +1751162 +5423219 +593584 +768636 +14461163 +3233663 +5253002 +12392490 +11541666 +3249898 +13255304 +9779061 +6996237 +13901232 +10611531 +8831039 +14457846 +9352872 +11549330 +15157560 +3888989 +13488213 +10564854 +4277253 +4915766 +4889076 +5211456 +1051072 +7375148 +2429331 +4593633 +9207132 +13263102 +7899772 +3639281 +13373323 +4112251 +2778272 +8751366 +15143656 +345627 +3761470 +4657752 +12884471 +13730436 +6550834 +9138002 +2048719 +2404981 +7566449 +11157613 +15578228 +11566838 +2858575 +10373242 +15551717 +3396864 +12882825 +4523216 +14217235 +949988 +2086984 +12937300 +6083995 +3953717 +4672621 +11349804 +10036280 +8151451 +5587958 +935358 +4072631 +15729091 +4203411 +11415148 +1768273 +7627902 +14015115 +11965424 +789510 +7733437 +49999 +3151725 +8231098 +2155287 +15847990 +9068035 +10740749 +2878853 +13968378 +8281698 +13896450 +13735623 +9310827 +11861956 +14734191 +3487846 +15284506 +15700567 +11866916 +9021515 +899560 +1073597 +2376928 +6120494 +2491920 +2366175 +5481424 +7139 +13048693 +3287213 +7830880 +4912524 +9686848 +6805963 +7132923 +13966673 +1113542 +1882914 +15967060 +12959042 +5251048 +1730013 +14245287 +7595702 +8246847 +13228951 +13158328 +9535574 +10482320 +13781630 +3837684 +1092284 +14170457 +4397940 +6802563 +3377275 +4837578 +7370090 +11343214 +10351942 +3162567 +676205 +1460578 +2716823 +4652934 +4467995 +3745031 +15641593 +11992297 +1260588 +275714 +11745531 +11975669 +3940585 +4764819 +15105456 +4386483 +5173071 +3095482 +8780989 +14934325 +2379461 +11257248 +8152165 +7498152 +2270756 +14901853 +13624278 +15056622 +174796 +14090278 +14259948 +7655523 +10520605 +13874548 +8690823 +4413093 +3263666 +12075864 +4901000 +8902439 +14334357 +14866994 +1242490 +850852 +4757426 +14835871 +13452976 +13835399 +14172128 +14559690 +4163652 +15416891 +9431975 +5183708 +1483622 +1519251 +3140082 +6191332 +12149931 +1334111 +144919 +9088970 +7697435 +3718339 +12301368 +11302975 +483821 +1619752 +10061993 +8936442 +13854549 +14307024 +8350912 +6492999 +2101900 +9260550 +1689398 +13537476 +1899476 +14775420 +10484496 +2917728 +4374612 +12487847 +9900574 +14696951 +1706924 +11626806 +10652305 +594598 +10920391 +721048 +12279782 +3271829 +7457787 +4502750 +2392487 +4129606 +2792598 +1548796 +9124823 +7622379 +11083622 +2483103 +6193973 +2263897 +10164669 +15294767 +148057 +1159382 +15608387 +12779815 +4584542 +4602389 +6285524 +14611032 +4369234 +13716333 +7028630 +10185831 +11561673 +1870147 +11139987 +13465108 +196380 +4847540 +12291368 +10793208 +5508368 +2796215 +14686288 +10385892 +6643962 +13445211 +9935867 +10515332 +6004600 +2453140 +2002323 +3135515 +8098227 +862042 +1332570 +15908873 +1731330 +10128875 +11158776 +787380 +15192530 +2994290 +12563682 +7535786 +1952990 +162169 +4594844 +15186621 +2000298 +13199402 +3910510 +13415914 +14707440 +5458568 +4486784 +3807110 +6011481 +3323094 +65118 +9504078 +1931594 +4862087 +12028686 +924552 +15100678 +8119035 +12419194 +11940779 +10202465 +613928 +3838337 +1368489 +15185665 +15374655 +7314832 +4241880 +7616627 +4575958 +11884100 +6989402 +214870 +13531175 +5996377 +8043534 +6197145 +1777260 +968610 +12753031 +2526228 +6996842 +15807713 +14311457 +687314 +4252983 +14583184 +10356119 +8390558 +4319077 +15555613 +2141536 +12828712 +4370592 +3744453 +11262500 +6244338 +14194726 +15880325 +6407347 +11538045 +1223779 +4473696 +2489604 +7550651 +14942603 +4793553 +15527816 +10447906 +10295184 +13229794 +12968525 +6543985 +14448090 +10233179 +1263992 +6755803 +12190460 +6523053 +7615098 +10403671 +15751119 +14669354 +2412873 +1490473 +13661611 +4146701 +11339001 +11393532 +1172342 +9368323 +5622820 +7427563 +6772854 +286289 +10800973 +11944744 +11200738 +10780005 +8751282 +15993637 +12690927 +3234772 +8853372 +1808042 +4450031 +13811285 +3700961 +7736272 +8148847 +14427393 +13663593 +9006288 +5046065 +3850886 +4063347 +1588193 +93001 +14099042 +9407957 +188269 +12157866 +9528544 +4111491 +4054048 +9933293 +13895862 +695960 +9976901 +10287940 +6064180 +10066390 +12910168 +11014687 +14935020 +3741219 +14139965 +2594963 +5385978 +8366472 +11823503 +13252850 +5219137 +12631513 +5787687 +10955650 +2879503 +3644494 +12716903 +7784786 +1809815 +14397939 +13777639 +6816711 +5315874 +10126338 +14273407 +825940 +879710 +1997398 +5316154 +15742281 +8876474 +11568705 +8502411 +6582776 +3469557 +2103440 +7750103 +8485614 +6223588 +4650927 +1687136 +15840710 +1668351 +2230080 +15606111 +4018813 +15224571 +12440426 +4729652 +13263089 +1823002 +15056844 +14431380 +14457521 +10223582 +13490138 +3088549 +15418727 +9624035 +11385996 +1431794 +14443185 +3031511 +15256584 +10733500 +9313994 +6077450 +10835611 +15026072 +12975906 +647876 +10563744 +6881208 +10747628 +10590954 +14305836 +11955251 +9468057 +12477192 +9777233 +8998142 +7772861 +1324332 +12500822 +9345276 +8421578 +4254359 +2033178 +10071651 +10755794 +14089418 +3948184 +12735050 +9788823 +1799220 +4319976 +14657562 +9163772 +13301434 +10168887 +9892210 +1028145 +9416632 +3430239 +959180 +6481380 +5408462 +10073511 +5164491 +11965202 +10068195 +5066897 +14267497 +10886591 +5521298 +4379410 +11698552 +294224 +13003794 +7321211 +5685353 +11319009 +1437575 +11317376 +4667952 +13845563 +13261812 +6723328 +4969268 +750163 +14977182 +10073835 +7248395 +15120149 +11749043 +716635 +6620156 +13507731 +6595764 +3100795 +11956518 +11473964 +13886865 +3726073 +518234 +654719 +11321960 +4925343 +9195949 +1817481 +3191278 +7438157 +2589282 +857694 +2539133 +14876925 +9321292 +7246440 +6812741 +750115 +8311440 +776231 +2106749 +7547880 +1104107 +3690972 +15355606 +4807204 +9925995 +15689307 +11012301 +13063623 +6517556 +3391085 +60247 +3531258 +8954694 +7755824 +2605446 +15017587 +202308 +4698683 +78715 +15159254 +12852413 +3578476 +10530115 +1982974 +1586785 +1847072 +4150354 +3997040 +2873166 +15837535 +6783927 +266998 +308220 +5227147 +5787650 +2777432 +13422509 +2203456 +11837258 +11872692 +2130399 +2398230 +11492267 +980407 +4500027 +13940781 +9418785 +1380924 +1310879 +12955514 +8459166 +12620255 +15605465 +175359 +6569379 +14193699 +3224354 +13377091 +3044145 +7930207 +2847691 +4623662 +14696434 +9190438 +6869054 +12993117 +3415550 +1252102 +2731960 +4566463 +9973833 +7979575 +14732805 +8642622 +14032424 +1509644 +12909438 +2845627 +3932275 +13345132 +1148105 +5264115 +4347715 +6113470 +15901021 +12195207 +1047327 +3254884 +476963 +7819969 +14929747 +3469312 +13533842 +11934947 +13816140 +6203444 +7033573 +5244334 +1657104 +12370885 +9402305 +6036209 +10216124 +15589432 +12638052 +3312014 +6810918 +12061851 +10317934 +8718675 +10298460 +4857637 +13602920 +652592 +11140090 +2109290 +13318143 +254895 +13102241 +5851170 +536973 +12474519 +12193068 +10935265 +5291575 +5325247 +12219492 +13038628 +11433231 +6542072 +1773824 +2892571 +3953042 +11942162 +3969714 +1321138 +12876130 +4041504 +6746404 +2166888 +9330622 +12660168 +611382 +12633768 +14687062 +4763854 +3923641 +3051789 +2449271 +14083667 +129910 +14788501 +9711264 +7621142 +4457316 +6151212 +5625175 +10277667 +293821 +10833236 +2745439 +1940740 +15824813 +10018754 +11647215 +15298905 +432594 +2704986 +6498177 +1418819 +12293022 +12189768 +13965101 +1052995 +10691430 +255079 +13744473 +14820538 +1950827 +1796555 +154634 +13583153 +8306585 +4327845 +13372278 +2704427 +3145687 +3318090 +12572211 +6573984 +9732768 +13776092 +12635417 +3443788 +13763681 +5895839 +3941802 +13129280 +4046311 +3374789 +14513859 +8029288 +10645922 +15768001 +15172669 +7535135 +4785810 +6196277 +3350481 +12249230 +55408 +391634 +15298410 +2020269 +579110 +7068828 +2562934 +1668146 +1017860 +1787630 +15951274 +2255302 +3076409 +1696456 +7158634 +14211060 +9808894 +8163904 +1740400 +13529724 +6830476 +1200047 +14751894 +14413159 +4191086 +9861438 +6838644 +1809813 +13598827 +1488291 +9714356 +8493226 +8034030 +11603914 +7296854 +3050113 +639582 +6300416 +10218546 +813335 +3408995 +8768939 +13513123 +3736819 +6349240 +15701936 +13465231 +13555742 +14761827 +12465716 +2784693 +3048955 +914696 +13736125 +14962632 +1980669 +11682202 +10200740 +9968626 +11436237 +12395599 +9748270 +4834230 +9860178 +5994247 +3066906 +11208750 +5192459 +1636414 +2460905 +2056345 +2190895 +4698467 +3215502 +7764982 +6683806 +5805014 +12671150 +12141442 +523843 +10843124 +15756378 +748173 +4982918 +14654347 +3458852 +6992685 +8885991 +8269769 +773247 +14977757 +15737140 +10471105 +11655854 +15878125 +13379382 +2744477 +12997456 +2762773 +6136569 +12556063 +14009361 +3228572 +9228958 +6434468 +8254623 +13718337 +13998552 +15716806 +14091430 +140603 +7680166 +12329791 +6185474 +1195280 +11395865 +12862398 +5891868 +4070882 +2539974 +8547631 +7817381 +7079662 +9763521 +15602200 +4931700 +538507 +1323094 +6027947 +7504442 +7894163 +14175342 +3398824 +1682603 +5640017 +15444654 +3599792 +6669599 +3159810 +8902619 +15604328 +2705233 +2188884 +3486874 +4665349 +687747 +7936974 +470054 +5609855 +9277506 +13370360 +9493911 +2977990 +4355559 +5340573 +2608679 +5138807 +13539636 +14856103 +2753609 +2544175 +1762878 +10868270 +4366526 +7910671 +5773440 +203179 +1788827 +4739959 +2174578 +12944596 +1332608 +13669660 +6578191 +12478537 +1471587 +3874903 +13386807 +566913 +10110672 +4932172 +98330 +14802058 +5959360 +5785506 +3099697 +3760631 +14303511 +9523648 +9308891 +7909714 +3956120 +7592357 +13978280 +9727005 +7726202 +9710576 +8776156 +8564194 +13105109 +986718 +129278 +10895183 +12498876 +15027052 +4115303 +9536455 +12451717 +4361938 +12591048 +14110076 +14758145 +13421129 +978506 +9774323 +15505432 +738719 +9056072 +14730596 +80322 +8789328 +7978197 +2208439 +10640491 +9284596 +11037472 +5969428 +13412429 +866495 +15859338 +9273367 +7513573 +2948960 +14692672 +9219584 +14464101 +2487371 +14769572 +7728412 +10046088 +12843818 +5383208 +4454987 +10747782 +13956349 +6669397 +6380659 +10740975 +680409 +7979094 +555500 +11768388 +11806034 +10910828 +12136369 +11046014 +2256286 +11882495 +6735317 +4383480 +806771 +6746033 +10781510 +567584 +5118804 +15786829 +13752380 +11775691 +2068741 +7355239 +14926532 +15564763 +6425526 +3626120 +3628163 +14320305 +5660363 +11081471 +6843379 +9673487 +5093784 +13138666 +13370429 +6999306 +12503815 +4742996 +8531541 +7178914 +12988125 +5698847 +15070354 +2144370 +7315730 +15122639 +11377557 +2075669 +716657 +12241984 +1392930 +9255077 +10542956 +3389275 +2800184 +2163400 +2856305 +10101938 +9990276 +15014620 +10506833 +11001216 +10336249 +12004631 +5778665 +12498654 +15089002 +1047107 +7519415 +14247866 +7153049 +1304740 +1477445 +14254217 +12051707 +3886255 +9479592 +5477409 +6692394 +14576024 +14603854 +6023483 +10868299 +10106392 +4967794 +14732091 +6228494 +13884611 +14678226 +13367824 +1738982 +1972492 +6247192 +3317924 +6623848 +14170154 +2043621 +14330220 +2024874 +1201099 +6628898 +15274424 +6040614 +7889835 +3906910 +14355417 +13651864 +10561598 +11584442 +12465363 +3653351 +1374692 +15035576 +7883351 +3606335 +5727917 +5285586 +12168941 +4357642 +4822992 +12439506 +11370445 +10305757 +10913669 +5399113 +13987804 +13235371 +1867596 +3861276 +11669673 +4359803 +1100150 +4037535 +5367543 +5574064 +14067933 +14731219 +2766753 +14349903 +6233478 +1450069 +7106711 +2872300 +12122372 +10764804 +1180912 +6040317 +489334 +9465079 +2895549 +8517292 +3377737 +3042373 +1851554 +5422927 +5458290 +3171980 +7667987 +13390056 +12687346 +1868631 +15095979 +11982058 +7139848 +14487832 +9277105 +11430941 +1583797 +155099 +6870465 +15208815 +4532386 +12716612 +3844732 +13949436 +11240565 +3815372 +488494 +3362132 +5162461 +5996728 +13233455 +9962666 +8560425 +10095101 +2737963 +5062020 +474813 +12722379 +7718838 +10563898 +3835135 +1354533 +690698 +2227496 +6064256 +8435595 +12506451 +8928395 +10770238 +14937018 +5227292 +8812392 +9196461 +13257991 +10139446 +13918713 +8197413 +8503203 +15455081 +15926453 +14470547 +4342874 +4446639 +15466437 +8484406 +9363796 +2300863 +9631429 +3315701 +15863249 +13169819 +11400324 +6846206 +7874767 +15508733 +70289 +7508314 +8609682 +5622188 +2745680 +4488870 +13930185 +13431948 +15378478 +7268674 +11993310 +4468398 +12564716 +14063593 +15829166 +11722906 +11299579 +8774825 +4720736 +470300 +1709848 +14600867 +15472006 +13974033 +12121828 +10359631 +6416244 +4904107 +3265479 +6695871 +8683049 +1024379 +10657191 +4909781 +7937993 +13273248 +5141790 +10492133 +5136218 +8022668 +6190604 +13038100 +8944470 +10041738 +5167823 +15369845 +8467701 +1613330 +10429171 +12860482 +11249868 +11108433 +14974927 +3095417 +4531594 +13469219 +14527273 +9291619 +14326935 +9899339 +11303598 +576869 +2326390 +10386587 +10073806 +8623006 +6761607 +1705518 +11226515 +9135858 +5801860 +1454290 +10382432 +309116 +15296768 +11820728 +12789948 +10528832 +10980561 +8077780 +9588077 +15721338 +2799467 +10297012 +6392901 +13960253 +457865 +12216766 +15422787 +8986255 +14533170 +12978930 +587896 +15120912 +4152938 +14379229 +14242107 +15439448 +9585858 +5764185 +15630667 +2977192 +9557399 +3277030 +5024314 +7693052 +13549282 +9347925 +14919179 +8766669 +14606153 +2912169 +2409429 +10193541 +2994995 +5274871 +13164504 +1918351 +7279345 +8525573 +7253669 +15797069 +882923 +957934 +10168473 +517903 +7752353 +4928211 +8944138 +1664178 +245546 +7117142 +12903945 +3457313 +5907951 +9183682 +14804941 +1178665 +8358492 +5202364 +2065729 +1274491 +7186677 +7612918 +5940010 +11013043 +3863747 +13001410 +11907141 +13514833 +7163671 +14298142 +766030 +15566723 +9755556 +3754787 +7298885 +7960373 +9962706 +4187659 +13027402 +7388100 +504047 +5842838 +9461371 +6707164 +3175211 +6588368 +4725253 +2082848 +10921937 +9166312 +15269113 +13991422 +10653972 +9290841 +8220556 +11636238 +15506448 +5702122 +9093000 +3910387 +3656063 +12535031 +1741473 +1973021 +6096884 +5376053 +15673790 +15116211 +13736674 +2661020 +12852690 +3294477 +7104139 +5225825 +10955123 +13755566 +10405308 +4134413 +8596074 +4112459 +14164953 +2713888 +2410409 +10493064 +7797452 +9650337 +9558018 +5406810 +2639463 +1373580 +1748565 +13579587 +13633270 +9030324 +7051167 +13766383 +14921269 +5934599 +2156350 +12141120 +9831245 +7714921 +4435618 +1959221 +1402142 +13962442 +376047 +9749099 +8174407 +8429053 +12274158 +2741569 +9248497 +4820792 +8699802 +5084397 +4359520 +5909507 +8801194 +12169372 +573103 +9643716 +2568307 +4320248 +5174763 +2137329 +9799961 +14252941 +5858236 +7874444 +7955175 +13368210 +8039315 +13420581 +2834233 +4987910 +8253450 +7378390 +3304336 +3032556 +14860837 +14407802 +8042270 +6442564 +1609511 +14412354 +12122090 +1355118 +7454964 +6806229 +2707173 +12218915 +6916266 +12933771 +11399437 +11259602 +14536409 +6318598 +14824607 +11257382 +5215783 +3195822 +4927283 +1052033 +12110131 +4934617 +3844341 +9471032 +7424678 +5039833 +11984661 +14683901 +3020974 +8006005 +6101897 +6558146 +1150382 +9517389 +11314888 +3264614 +2258111 +10524390 +15918981 +1142850 +15132993 +794056 +827558 +6782977 +2335432 +1387146 +7882637 +5430372 +10026951 +3120464 +8091588 +5544443 +4339361 +1998890 +1834777 +11571456 +6860571 +5101641 +3634159 +5148596 +8239874 +15701986 +15612534 +934972 +11679290 +992412 +15467110 +3664915 +7249412 +178490 +8799536 +2065324 +142895 +3460425 +14319918 +9254351 +15582022 +4525076 +6893576 +13127269 +6720186 +12825941 +15631976 +8206486 +83985 +7968719 +13232945 +8236438 +9245013 +8785585 +13421164 +1207205 +2639337 +9288511 +4145674 +7194804 +15033412 +3478744 +3486630 +8647310 +10329167 +7131705 +15390539 +10988825 +8330814 +6940320 +2781948 +7441032 +14912976 +4559709 +7514905 +7467390 +10317554 +2165140 +11465298 +193847 +3766804 +3109042 +12020855 +9164362 +9910324 +2228042 +12930022 +12219651 +14611014 +11554314 +2856006 +6168906 +11710145 +8111113 +7049062 +15799244 +2302704 +12609009 +1379802 +6753255 +2514984 +2356282 +2279906 +10569584 +13890336 +698733 +1562437 +14170702 +14497772 +15362115 +9915254 +7672187 +5632716 +7389243 +10098380 +2219128 +11383497 +14601667 +791770 +13762755 +5407875 +4831345 +10053248 +5342865 +7370390 +1289334 +11654806 +14957928 +10830049 +15306427 +14728012 +11031887 +11595560 +13018789 +4622125 +687323 +4417179 +7458428 +6238149 +11895722 +9530768 +8135274 +14091441 +12553210 +545638 +6715669 +14368416 +8887944 +7495021 +1159501 +9083826 +7394073 +8283191 +12612910 +11463592 +6347035 +7356267 +14388767 +7332462 +14554525 +3637177 +12284952 +15338174 +2577429 +916833 +10395131 +6045326 +12963735 +10939696 +6215799 +5256270 +9176923 +14160911 +9658246 +15389427 +11464873 +14382718 +5714505 +60657 +1678522 +1351236 +10741037 +15248187 +429319 +7781666 +5251340 +2564418 +7917320 +775909 +6366671 +12939136 +6558582 +11258552 +7209079 +14341657 +14224402 +6930055 +4354694 +8803919 +5046169 +520550 +3844803 +3171319 +20739 +6957497 +13374832 +11874611 +4378757 +14548426 +12830729 +4220335 +8026163 +233534 +7970047 +15642800 +5834309 +14394933 +2064373 +317654 +9798866 +11274519 +13227060 +12748783 +2149054 +6973034 +8918347 +8771966 +9095375 +10344384 +9674261 +2600796 +11318546 +4917035 +1104963 +10205084 +1987381 +15633217 +11834948 +9550963 +13574052 +13628430 +5952142 +9269556 +1174601 +4975570 +3181010 +9394943 +11141862 +9173853 +9626792 +12758993 +12615365 +11596379 +9253137 +341166 +2366932 +11327858 +8809806 +9480014 +5309819 +3565093 +13197317 +14205686 +7338626 +11472130 +4120341 +12344194 +2514965 +12738490 +14758587 +14831239 +13936700 +6191824 +7178968 +3308907 +12762494 +10158001 +10806224 +8654640 +11947903 +9742329 +653293 +11541644 +9791549 +15634424 +12632112 +856029 +4639765 +14073242 +11475455 +14338021 +11679734 +484926 +11590280 +1842816 +7578547 +13293179 +2704800 +3245635 +7762627 +14796389 +4492949 +8375119 +3904115 +2860489 +10830008 +11256276 +12111865 +14635879 +4500183 +6729502 +2446291 +14000271 +3690741 +7445600 +13182700 +14791589 +8187300 +4816008 +9244705 +14753914 +14507165 +5414187 +8766588 +7930446 +1264256 +11602911 +833158 +14005090 +2508401 +14149166 +5763265 +14778841 +1014720 +11255013 +6371331 +10615538 +10192366 +4995930 +5931631 +8010811 +6893605 +1627041 +14147803 +1478075 +897528 +14591462 +13429241 +10255960 +10294795 +10138990 +8841680 +3990349 +10450311 +4526100 +9567883 +5947946 +6130945 +6512560 +8034410 +4670117 +12107688 +10854239 +3601375 +3799570 +3767693 +4768342 +12394400 +11725191 +7659755 +2081953 +9302010 +12699554 +12664889 +4687307 +15388372 +2395932 +11137557 +14879809 +13474393 +15993969 +12248032 +8582822 +8759971 +2814754 +13042443 +3517637 +10789240 +9450318 +1251318 +14769144 +1845034 +12695780 +10736229 +10108116 +2888857 +14268417 +11825203 +15056877 +289960 +4281395 +13986083 +4112645 +14421870 +10843358 +877820 +10308463 +15764526 +8967543 +10204546 +12506338 +10312716 +6781843 +1003174 +6192653 +7297701 +4995420 +12166417 +3313457 +621312 +7876062 +10213315 +6613425 +1241880 +1364377 +11076053 +2154734 +14841262 +8134848 +6785533 +3477757 +2492899 +6683869 +13077084 +5112681 +12102720 +15498988 +5503197 +10664863 +15984219 +11760700 +2420081 +9031758 +8650038 +12294942 +15022264 +8849367 +275726 +4956682 +12760645 +594266 +2592413 +7729370 +7398974 +6638118 +5941767 +9979427 +7058327 +6312331 +9143201 +8079090 +1778183 +9638085 +5742777 +9273708 +12980801 +2476745 +11202448 +529262 +4059654 +12098443 +7256237 +13638307 +4460329 +4013231 +6193776 +4873191 +14568884 +7651579 +5444288 +15146071 +14360536 +8816873 +7252908 +537601 +13578636 +8016807 +7602324 +14137541 +9342065 +9833880 +7095697 +5861454 +5986986 +12706958 +4589364 +5798695 +5008869 +8919445 +6836822 +7632438 +4110338 +14282295 +8353737 +1307762 +2778352 +11319690 +2724741 +14392777 +6907818 +15936784 +3867147 +7924837 +6969646 +10716871 +2151864 +1335597 +9640039 +7541002 +4370432 +14913507 +13494981 +4145910 +2245097 +5493968 +2428631 +13848150 +12311066 +10951143 +6712215 +2646690 +4141731 +7111994 +4416416 +14023935 +4673110 +9517382 +8815821 +14818534 +4644459 +15951617 +8910392 +14853812 +9119073 +5098334 +11189461 +12377752 +8088661 +6724243 +2010115 +8555921 +11639610 +5712968 +8300223 +8485451 +5399349 +6924000 +7310201 +7205458 +7259846 +13177285 +4888842 +5282469 +1916121 +7503738 +2882590 +59931 +2376540 +5647932 +13921853 +10459965 +1972989 +7815303 +4917546 +3945814 +14385400 +8949395 +6728608 +14618575 +3765315 +11133793 +1497738 +983482 +11621392 +13218785 +1499851 +362407 +9967468 +2689957 +2894866 +10584987 +1341982 +14333995 +8996693 +12704246 +3636404 +15606057 +4061171 +10939664 +4020905 +8089028 +6706837 +14701565 +8128760 +14802651 +12570438 +9504970 +7904622 +14551841 +13964200 +428430 +2929935 +15421151 +5052302 +11975317 +2663895 +4940776 +6174689 +1523715 +12381051 +3417407 +12159617 +728445 +15947497 +8472744 +5880863 +14622167 +8897401 +11947860 +6586828 +4702210 +8718384 +12175158 +6277354 +9060184 +5104334 +2669019 +10867167 +11016615 +4755054 +7046091 +13126688 +11566918 +11143899 +5517858 +14643446 +4953235 +3510314 +4859655 +2616165 +14619524 +3628886 +10486373 +1148139 +9213329 +8304651 +13318671 +1746804 +10056115 +3214677 +8943213 +1690809 +14231595 +8509257 +8510743 +637112 +7458459 +13140499 +12798787 +11825077 +5708327 +11569060 +14116490 +11963522 +8715525 +11322733 +2238665 +15146106 +2757970 +372915 +738616 +13742154 +10661745 +7615114 +12731138 +15957518 +9669317 +14620047 +3444837 +13283743 +15634260 +9016553 +3296616 +9677266 +4117249 +8783296 +8984638 +15832201 +10105126 +3005019 +15577985 +13590657 +220528 +11463857 +4157021 +7204249 +3014177 +2051842 +15958465 +14406696 +2803696 +4080950 +10064300 +11133728 +698364 +198508 +985610 +5250773 +10866227 +8770547 +13499321 +3176740 +12102033 +5139987 +14102208 +13651831 +9987026 +6893240 +10495503 +1205741 +9788376 +3483375 +1276916 +3654356 +3723509 +7360434 +8880041 +15706368 +8937274 +5722404 +10399394 +12912355 +3390333 +9056928 +11737757 +3581902 +13586477 +10534705 +15273304 +10698290 +3925365 +5769220 +4263102 +4800209 +14024345 +4453018 +14910083 +4626471 +11125551 +11880147 +2052182 +14288504 +13301363 +122440 +8015597 +263083 +12421020 +8714275 +9502863 +6419761 +10348752 +12977975 +12702165 +12904590 +11312820 +488332 +7400191 +3182749 +4644830 +5007552 +12130723 +2254178 +7829069 +7540475 +4376364 +234213 +10898688 +3776847 +11274789 +11199567 +2220169 +7805179 +8792238 +15394217 +5169079 +655916 +9876542 +15593879 +15518806 +8282513 +13387187 +3789007 +397878 +5871644 +8379173 +4314099 +6177732 +4155304 +4989113 +13180073 +9984207 +4100513 +15671151 +3327208 +1243620 +15870383 +14547798 +7136797 +10943663 +12450593 +11735310 +8816990 +4155201 +4671730 +496734 +607132 +3501221 +12593648 +3786733 +10709951 +260594 +592164 +8583754 +9011774 +1399296 +6441766 +5915447 +13032478 +608965 +5054518 +1008628 +9900086 +1401300 +224054 +852946 +10917830 +15666859 +10067263 +301922 +4245003 +1626086 +1751215 +12443857 +1611676 +5818569 +15811385 +15652993 +7889383 +68818 +6086925 +14974576 +9382169 +11322163 +6311924 +4110375 +1755346 +9636109 +11309664 +12903853 +7477136 +1169597 +4720167 +4366497 +14831628 +2494292 +6570262 +7385281 +7680481 +10493301 +999154 +11221261 +5043911 +14032645 +4939997 +8583247 +5776311 +10579643 +4719353 +4026046 +4473148 +10404872 +8619071 +5452945 +6324741 +14885553 +11070845 +9602969 +13697924 +13715755 +5734640 +12854845 +2670753 +10226817 +6574102 +14951568 +12371625 +624720 +665197 +1766914 +1979686 +15186124 +9879331 +2414119 +12130617 +1090530 +15293247 +14216882 +5899560 +6738311 +15937239 +8000491 +6603360 +2831445 +8616625 +12107279 +3973411 +8767793 +8242082 +3556747 +4424154 +1937142 +11592596 +1555220 +7943911 +4765819 +8985776 +14919994 +763663 +3171536 +6798073 +10616244 +11542477 +5756376 +8114906 +5695952 +15545065 +10944989 +5805954 +3148376 +10170322 +1027898 +6358988 +11224260 +3655460 +3975691 +10976944 +2215664 +8847881 +5172954 +9544052 +14290330 +2191598 +4281284 +12934562 +6613642 +4755037 +949290 +10757191 +2615502 +6770168 +10669300 +14527213 +8998834 +2018591 +958753 +11760471 +9851583 +8978001 +13768590 +6409169 +4000572 +4947100 +6844160 +9884262 +5912121 +2550579 +14474962 +11165226 +14556682 +11725538 +1897532 +14681391 +635305 +1887942 +11893547 +5620442 +12014088 +11102115 +9604965 +2826050 +2788972 +2295212 +12959368 +2167685 +6947798 +12879588 +10417590 +8550025 +15230799 +15146498 +495419 +13230409 +14524880 +15275457 +15093442 +10810830 +6733106 +8234872 +3849302 +10122926 +8271093 +8181603 +9467080 +171908 +14301942 +6009097 +15506339 +4867726 +8016856 +11309042 +15216964 +4670428 +15925312 +15117188 +11384697 +10411836 +2164007 +5843772 +5949290 +7513110 +813941 +5774613 +4774836 +860305 +13230474 +3363228 +11611836 +8141304 +12713091 +5320154 +9146131 +2244269 +9393935 +9515433 +8658005 +11339511 +1718779 +10956753 +10586229 +10705884 +14686134 +9067334 +8314312 +14139973 +9096149 +470894 +2958595 +10707880 +6269014 +6679372 +9648488 +3960248 +6984422 +10277822 +7097672 +14436706 +3108843 +8067617 +5204078 +4768915 +5879293 +2371309 +4479783 +10025214 +4910978 +14141516 +11134488 +13058005 +7682974 +14617041 +3226699 +13976944 +12213081 +2599133 +10463736 +9641858 +1159984 +479132 +1604657 +7597956 +3628083 +243455 +2223190 +8352464 +7320873 +11551575 +1661939 +14169204 +12067320 +2121163 +15055272 +15845312 +13882711 +4485022 +12532113 +6329692 +12875925 +15460384 +9952726 +2107804 +8378346 +8907658 +8062252 +4579565 +8757836 +5152956 +1653415 +12098433 +13288882 +15127106 +5057501 +5071666 +5700773 +14625585 +2962946 +7820423 +8414549 +5572709 +14036951 +1344950 +6707871 +4383654 +6582009 +11731270 +5677023 +8889409 +5477775 +10431 +15693845 +10826646 +4901047 +14374061 +12495262 +8979236 +13255581 +4510182 +13761881 +10846710 +10543324 +4741354 +7321482 +15340784 +10205327 +13396563 +4386738 +7952664 +1108864 +5202454 +11290940 +11323938 +14532398 +4645110 +8410989 +4768868 +6048584 +14441271 +8920627 +7371937 +7592195 +4071363 +9119876 +7807331 +8029105 +5653222 +9007543 +12238979 +15372380 +10445627 +14876147 +15492410 +7470477 +12736376 +1154633 +11959472 +5846531 +8330899 +10986902 +11521761 +15322299 +8750704 +15614280 +5342792 +1509694 +14999739 +2959670 +1282542 +10497919 +7043696 +851121 +15044327 +12621169 +11019647 +2318033 +10585461 +2956425 +1784891 +6314278 +7977370 +2351424 +1933346 +229937 +8086250 +14017769 +12757629 +15835534 +2836491 +9638548 +4512259 +4051777 +5876428 +11265699 +5582055 +11807151 +3057284 +1143269 +11609236 +15327781 +8339479 +10006766 +9311625 +9786979 +1585281 +9605963 +15622645 +7828727 +10416795 +10431348 +6496657 +1605540 +11747504 +5348286 +11558800 +15628218 +11285033 +9189912 +12055727 +11782514 +5629538 +7343345 +3663179 +14471522 +10430220 +4604662 +11635770 +13180795 +5817810 +11889776 +6286267 +12661408 +12817215 +192322 +6835084 +7853759 +3364349 +13575799 +5485775 +13299821 +4145789 +4766214 +11386128 +10499948 +423150 +10939949 +4287163 +14041423 +7169689 +5976332 +352893 +6833741 +71950 +7068884 +13267879 +5891277 +10337375 +12748956 +11215027 +12662070 +12413102 +15601804 +4119402 +13821175 +5527328 +5721092 +15386194 +11846669 +15962617 +11568883 +12249212 +14850565 +5887788 +2980026 +17894 +13417734 +13095753 +2402421 +1616126 +1633584 +11613833 +6874625 +13107062 +6195726 +5972968 +4166678 +3767163 +15671136 +2627418 +8842827 +6121970 +2637370 +8880139 +1177585 +6702866 +8846066 +5039135 +7860024 +5790938 +15887979 +9335041 +14149328 +8985120 +3205837 +11077052 +14842517 +10476778 +2987515 +1639545 +2902520 +9582884 +5717389 +3069094 +15485236 +10962847 +5929261 +8081205 +11995668 +2994744 +5805856 +1460866 +11419774 +14492330 +448272 +8053371 +1442110 +3456863 +10696809 +10823597 +15638654 +13444668 +3941066 +3797235 +5189774 +1166726 +6273541 +9948828 +483211 +12173060 +12940233 +6727083 +4938457 +7055945 +8140018 +13250739 +6522878 +8414489 +4018989 +10143357 +7515039 +1826511 +3192054 +772432 +7037541 +4425698 +3420602 +3340541 +9751933 +825762 +8102735 +12532227 +10653219 +4156128 +2790050 +2516201 +3209291 +14297335 +10827373 +5466545 +5221800 +8604140 +3093880 +11320775 +2308186 +11433398 +6584910 +11333750 +6694658 +2395257 +3767116 +14612238 +7756765 +4521668 +1302620 +4234559 +1761344 +3472460 +11997952 +3835336 +5366380 +7555310 +7190843 +860979 +6430863 +8455397 +1036948 +770316 +14402250 +3642088 +6497149 +15443565 +3608784 +10186308 +12037950 +10828681 +11183753 +2295944 +2626173 +15004999 +9377989 +6419182 +15981096 +6521826 +13029239 +8584099 +2081483 +9086720 +5098127 +1994262 +8221734 +5403935 +7688872 +2350206 +12363993 +10287420 +5763946 +7932456 +5916117 +12332157 +5108370 +5051896 +10165298 +7269075 +14993254 +10889690 +15532411 +11677890 +8802442 +10499496 +7233166 +4792332 +1858711 +14522463 +12225955 +15563814 +13684903 +4705832 +2205815 +9423045 +12775569 +8818981 +4922999 +10793015 +5331062 +877819 +12948640 +12830092 +10270224 +10365849 +84964 +5557202 +6610515 +14191303 +10867869 +5368317 +7047043 +12641849 +5403729 +3192605 +10049582 +8266514 +1123830 +6298867 +2692805 +6627026 +4109023 +12070046 +3070282 +1263664 +1231194 +190360 +11438063 +1391786 +12951530 +15821086 +9501182 +4737979 +9599736 +6214164 +11772354 +1405439 +339355 +5026893 +8216756 +11809973 +8135058 +221820 +761657 +3948299 +15232132 +322131 +15273992 +7708101 +4846504 +8592264 +3879688 +6829023 +14862715 +6298558 +5488734 +15114072 +13038711 +1175251 +167424 +9701402 +11795680 +14400422 +2437539 +15541471 +15387127 +12044110 +1349899 +837791 +13709847 +14550761 +10324560 +6275264 +7261029 +481809 +10270384 +7639048 +1925565 +12425290 +12603462 +11788928 +12572580 +1866770 +2228846 +1554261 +11364375 +15325187 +15625177 +964586 +8956969 +876064 +4430882 +14755910 +5720053 +13492136 +8731738 +10413737 +10769501 +13908685 +4334290 +6376136 +8134049 +15598640 +9193384 +13354143 +6886371 +14326859 +8266576 +15298878 +10239725 +4309585 +14443826 +15404763 +6094965 +4836975 +11143967 +8051723 +14265691 +8078879 +7686644 +3395202 +9290061 +15567493 +15092166 +9362153 +12963492 +7915630 +10152333 +1670380 +11535216 +10690126 +1228498 +5842883 +6959004 +14392147 +7227939 +12573743 +4891054 +12158680 +14549595 +14679562 +8549588 +7227819 +1270670 +6934024 +13199535 +2118010 +13459261 +1114785 +14250736 +10932620 +11629614 +6860769 +7567378 +1461433 +6983534 +5704918 +7469217 +5128136 +6303365 +43341 +4095913 +3702052 +5239304 +6274962 +2437145 +11975555 +292659 +4343214 +14388000 +11463752 +7350686 +12867240 +5042145 +1523868 +9057086 +2168915 +3853722 +8449231 +3441318 +8792898 +15263651 +251739 +10529654 +11551031 +14197142 diff --git a/Algorithms Specialization/Part 3/mwis/input_random_9_40.txt b/Algorithms Specialization/Part 3/mwis/input_random_9_40.txt new file mode 100644 index 0000000..bc063de --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/input_random_9_40.txt @@ -0,0 +1,41 @@ +40 +152 +1109 +1087 +585 +524 +1281 +510 +776 +1315 +426 +683 +229 +1145 +1277 +1577 +1347 +317 +1055 +188 +634 +116 +42 +1377 +649 +1579 +1333 +536 +832 +1242 +959 +1079 +934 +1524 +1368 +874 +433 +60 +1306 +827 +1575 diff --git a/Algorithms Specialization/Part 3/mwis/mwis.txt b/Algorithms Specialization/Part 3/mwis/mwis.txt new file mode 100644 index 0000000..e51f5b7 --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/mwis.txt @@ -0,0 +1,1001 @@ +1000 +4962786 +6395702 +5601590 +3803402 +6784626 +4944482 +2882725 +9310662 +5247184 +9819854 +8398364 +1470063 +4199696 +4623136 +8160902 +930850 +3889157 +8211214 +6560984 +8835416 +3024392 +3286693 +736791 +3862790 +1420652 +9767464 +6093772 +2133393 +358615 +4537366 +6655609 +5551123 +9039549 +469060 +304701 +5768649 +1339317 +8421671 +513661 +6792447 +3944383 +4692731 +4614391 +9344708 +4169702 +4345210 +9744699 +9407222 +6480402 +7985130 +4407746 +4040958 +7960851 +5394516 +4024926 +6784072 +1710864 +6886941 +7495555 +5654086 +2481292 +8892684 +2186179 +1539792 +1828698 +4741356 +3476859 +327340 +7634220 +808031 +5101226 +6958744 +1511709 +7231864 +7447240 +778642 +3120423 +1098518 +6450468 +399546 +7275028 +1081427 +7154897 +2804344 +9440402 +2909959 +2686145 +5099515 +3776057 +5765944 +8935025 +6477008 +3490890 +1691564 +2225172 +8510419 +9788522 +9484150 +7236748 +7334350 +3501364 +443073 +3839984 +511778 +5938948 +8542395 +998674 +307072 +3068204 +9908539 +4675871 +8958494 +713730 +489163 +2908154 +5500103 +7463231 +4256879 +801111 +1312026 +3383096 +9677883 +6972318 +9812223 +2680217 +1777191 +7197988 +8155531 +1762267 +256812 +4319070 +9635141 +9583155 +3250694 +149904 +9722955 +6836491 +5998739 +7077631 +2905680 +8047743 +5398820 +5327949 +8262028 +6446657 +6945815 +5201088 +1818890 +3455395 +2094958 +1387816 +73296 +5562568 +4138240 +7411620 +3236316 +3526603 +2889306 +5881661 +9746189 +295106 +1140760 +567794 +8971262 +8092826 +6178363 +6493070 +5307905 +3151323 +9430583 +5945625 +2591187 +4762105 +1419485 +7975274 +6200869 +3747595 +3496996 +5533979 +4881997 +6326981 +6530568 +6491735 +1433394 +5656371 +8268622 +4897856 +2245483 +1669874 +7743046 +3840061 +1703393 +6096353 +3282159 +4065018 +6008865 +3662040 +440417 +6320312 +9523490 +6583500 +1674269 +6902908 +8718923 +4953838 +4492172 +1406910 +7453747 +9251820 +1368416 +9781274 +8913978 +1395947 +5304262 +2437936 +9096011 +368065 +6977113 +305541 +7998419 +9113264 +932390 +5948936 +3610392 +6452644 +7392634 +4319886 +9125467 +2520028 +7543480 +1811018 +4099447 +4892952 +7597021 +8361800 +6314060 +4059634 +3125308 +3192850 +9152613 +1306872 +3292977 +9560779 +9488831 +9009343 +5026364 +1010852 +1545256 +8623793 +5644518 +2948787 +3809130 +2673396 +2060852 +2653718 +4176196 +1615904 +8461567 +46747 +1206954 +7220207 +9171602 +3338565 +3061384 +9674051 +2510050 +382009 +247219 +6002436 +1003287 +9988055 +3041426 +8936322 +7452194 +405922 +998911 +9382240 +4249228 +9221427 +4650092 +1772513 +2816258 +8258398 +1476303 +320865 +6700891 +8695236 +1180251 +9260565 +6330678 +3891892 +7567141 +2845081 +7192332 +5252074 +9132808 +9208518 +2096326 +342578 +8349742 +3159129 +4205011 +638307 +71223 +4872024 +4912458 +2849051 +4781804 +6261562 +7290515 +5007673 +7458434 +4013763 +8550805 +8008820 +2813461 +2055878 +7657837 +7385240 +4792029 +7538175 +5131101 +9006068 +3337699 +9317035 +1481292 +8231505 +9487483 +3345098 +449245 +453983 +5589565 +7292106 +2703366 +5298881 +4515612 +1256237 +2222110 +2684520 +7701606 +7853799 +1194554 +7851668 +2444712 +2930373 +1936058 +4295952 +889562 +7390238 +1844735 +8371775 +1735214 +6206412 +3559345 +6812846 +1985125 +1791905 +728358 +7230264 +428268 +7286935 +372152 +69051 +762807 +8510926 +2815300 +9983039 +3209564 +6777024 +4992085 +2890580 +562039 +9194719 +3176970 +7526657 +3493083 +7967410 +8786315 +4059864 +6382237 +7073152 +7545693 +6431229 +1028498 +5789973 +8113571 +7564283 +5817713 +6832277 +5002565 +2265208 +438557 +1757079 +230881 +8495104 +5103307 +7420851 +4180422 +7270131 +1905337 +1475037 +9123930 +9028159 +4990449 +2384686 +9696856 +3007692 +8297118 +211151 +5438779 +939934 +840794 +4164074 +8027683 +9922110 +1912779 +6026895 +3157619 +928339 +4618770 +7990617 +6364128 +1665428 +2032576 +4278982 +6100265 +6916991 +3385276 +1620451 +4938346 +6242748 +2804263 +7464822 +4556996 +5035925 +2753070 +1992856 +8716085 +9036144 +2277153 +8453661 +4998172 +5797542 +367000 +950156 +5886760 +8153903 +5106830 +9327140 +4457455 +5022044 +3052347 +966685 +5172349 +2728196 +114135 +114631 +950795 +5526943 +8218003 +4491994 +7829474 +2789301 +5316357 +4262939 +9673787 +9578536 +2523410 +506950 +4693798 +9940156 +6942521 +4182321 +5383012 +4860281 +8370920 +7573431 +7768171 +3221024 +136106 +3558236 +1532053 +3539310 +2559342 +5062808 +2759619 +1745360 +7119640 +2321292 +61658 +3124538 +7173906 +2308870 +7978139 +6890041 +6990701 +9148722 +7011840 +1004792 +8528187 +3401861 +2686816 +5880479 +4738654 +8779826 +3521280 +2432159 +6727447 +7812233 +6665980 +8840860 +8512364 +3689400 +7355420 +3122714 +5805153 +5906419 +2998226 +9406986 +5651526 +7543317 +972976 +3346751 +3019685 +8516433 +258788 +6865579 +7756334 +9451512 +9182658 +8428446 +6755965 +4586583 +7925989 +1750013 +1012874 +9879336 +383953 +8490296 +8428185 +2060982 +8463641 +7064392 +3495414 +6781287 +2006763 +3411676 +8172818 +8583986 +9299153 +5452259 +2107695 +4570801 +5699991 +8274500 +7659330 +3933403 +5088705 +1593520 +2318532 +800976 +5025027 +7639122 +1046031 +792737 +5459182 +1592753 +2170890 +9789466 +5809494 +7911061 +2539029 +8128492 +6194946 +8695485 +9659426 +3269288 +2485303 +7917729 +8230758 +8239170 +2859339 +6147337 +8804366 +25181 +2859231 +5697800 +5916890 +198723 +1295416 +6001047 +9065735 +3209019 +6034946 +1731523 +7530638 +4911295 +4227646 +8017018 +9172125 +5472593 +8707393 +4662570 +4188377 +3616500 +5372731 +2963776 +5781540 +547771 +6944907 +4830030 +3204711 +9652058 +3214849 +8558645 +1198566 +5762344 +6891881 +1340276 +4572263 +9330449 +1512284 +9286625 +4875144 +3487144 +456312 +3686685 +8103846 +1473723 +8969048 +1880736 +1759826 +2660009 +6476439 +4195665 +1902918 +6541154 +3688474 +9839555 +6651494 +7451271 +2178417 +1800904 +3486131 +7961262 +6080960 +5622791 +2353468 +6091491 +3704395 +5007227 +9766820 +7489731 +8204534 +653479 +9716090 +3198448 +9407622 +5800774 +2047472 +2054300 +2404336 +8797243 +8880009 +942131 +6609608 +5630020 +1811483 +9775730 +190668 +9154330 +5814438 +2349137 +87075 +377384 +8265014 +6235364 +1268556 +3993536 +1315177 +2978348 +6866975 +7192230 +9097204 +1508552 +8389823 +4418343 +3207064 +3228001 +9060408 +2572469 +4556887 +772937 +569691 +8870161 +8748666 +5320607 +591676 +6746779 +3049333 +1098005 +3201215 +3678652 +6987296 +703728 +9091928 +7137459 +7851264 +8679414 +5073340 +2800891 +3549720 +6492278 +7347897 +8150917 +9072915 +9901590 +2598922 +4927088 +1765561 +738823 +6527609 +8488766 +2377259 +1736305 +5587018 +2342320 +6319258 +9326385 +9725092 +3708463 +1751982 +8413788 +2812497 +6931514 +8034607 +7712963 +1665201 +5604160 +2580404 +8580377 +3987517 +6994034 +3461720 +9023568 +3001914 +3162591 +4862158 +5506641 +8098537 +3719415 +5423946 +3462891 +2006838 +5950531 +6884423 +5895826 +1687977 +7296380 +8527160 +579056 +929868 +6727615 +2911321 +1839652 +9883242 +4019779 +9351955 +1506017 +8878831 +4904090 +1116317 +2857737 +6748923 +3853755 +9070989 +6055928 +8495836 +3285325 +1291712 +3948504 +598342 +1281879 +3452434 +811454 +55155 +69666 +9746527 +8211717 +8216491 +2913751 +841852 +6067475 +4500451 +4812117 +9506317 +4721179 +3430293 +8096704 +2169682 +8080867 +959158 +6986191 +6230108 +1518225 +9144943 +4276108 +668735 +7066824 +5485477 +6897681 +9606419 +411948 +4773096 +257689 +5166916 +1026383 +3757232 +6403261 +120660 +8418961 +751193 +4319181 +1258900 +7066471 +5834556 +9970511 +694730 +9718714 +3113979 +1798400 +8577364 +967966 +7761512 +5987361 +1298629 +9751177 +2374549 +4800917 +6048397 +3881601 +5413145 +9343996 +5041981 +568535 +8439155 +438409 +776396 +8795136 +9114404 +6175501 +9079829 +6773121 +8172102 +9880452 +373909 +2155676 +2182504 +5579551 +7656805 +9861114 +4136374 +8786839 +9617640 +5277095 +8455766 +5737131 +8045592 +4790400 +5646144 +6598950 +7695887 +9387672 +907962 +957241 +7359468 +5934152 +8620600 +130133 +4298771 +8000946 +9967304 +9170262 +4052754 +3583496 +6095556 +3813728 +8025242 +5871565 +6064143 +5217101 +7327965 +2436132 +3590119 +931544 +9765838 +7736249 +7028875 +2828882 +3744219 +2038808 +2208794 +4519737 +2901376 +5151574 +875323 +7820979 +2271532 +5310716 +4816325 +6083796 +2704672 +7885209 +2415433 +3888095 +3656551 +3210487 +3509308 +5685228 +2198490 +1967673 +1415527 +2866735 +9860515 +3046505 +3877183 +6102348 +2798277 +5699538 +2173325 +1628328 +5033001 +4046418 +5181215 +8111653 +7485814 +5485629 +6017894 +3702841 +4723312 +5279763 +4548119 +1076239 +2571841 +1033405 +9934376 +9360558 +2683831 +2755130 +5472163 +1640750 +6639786 +8304816 +4736842 +718355 +8029910 +3933803 +6141288 +3957342 +1258240 +758402 +6150115 +4312581 +7783453 +9346578 +9585654 +2180358 +2487797 +8664854 +3572216 +8748977 +5218044 +2273780 +8092203 +8420778 +7982179 +8496968 +3197929 +6429917 +4356919 +5303666 +210350 +8520887 +7263348 +4287969 +9630021 +9990728 +8455483 +5433316 +4773035 +8432976 +3312796 +2431648 +8237261 +9628820 +1399389 +7546051 +8594344 +3304589 +6911311 diff --git a/Algorithms Specialization/Part 3/mwis/src/lib.rs b/Algorithms Specialization/Part 3/mwis/src/lib.rs new file mode 100644 index 0000000..10a95d1 --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/src/lib.rs @@ -0,0 +1,49 @@ +pub type PathGraph = Vec; + +pub fn mwis(weights: &PathGraph) -> (usize, Vec, Vec) { + let mut mwis = vec![0; weights.len()]; + mwis[0] = 0; + mwis[1] = weights[0]; + + let mut solution: Vec = vec![]; + + for i in 2..weights.len() { + let v1 = mwis[i - 1]; + let v2 = mwis[i - 2] + weights[i]; + + if v1 > v2 { + mwis[i] = v1; + //solution.push(i - 1); + } else { + mwis[i] = v2; + solution.push(i); + } + } + /* + // Trace back the path + let mut solution: Vec = vec![]; + let mut i = mwis.len() - 1; + while i > 1 { + if mwis[i - 1] >= mwis[i - 2] + weights[i] { + i -= 1; + } else { + solution.push(i); + i -= 2; + } + } + if i == 1 && mwis[i] == weights[i] { + solution.push(i); + } + */ + + (mwis[mwis.len() - 1], mwis, solution) +} + +pub fn asked(solution: &[usize]) -> [bool; 8] { + let asked_vertex: [usize; 8] = [1, 2, 3, 4, 17, 117, 517, 997]; + let mut result: [bool; 8] = [false; 8]; + for (i, v) in asked_vertex.iter().enumerate() { + result[i] = solution.contains(v); + } + result +} diff --git a/Algorithms Specialization/Part 3/mwis/src/main.rs b/Algorithms Specialization/Part 3/mwis/src/main.rs new file mode 100644 index 0000000..ca70bda --- /dev/null +++ b/Algorithms Specialization/Part 3/mwis/src/main.rs @@ -0,0 +1,103 @@ +use mwis::*; + +fn main() { + let filename = "mwis.txt"; + println!("Parsing file {}", filename); + let graph = read_file(filename); + println!("Finding max weight"); + let (max_weight, _weights, path) = mwis(&graph); + println!("Max weight: {}", max_weight); + let solution = asked(&path); + println!("Included Vertices: {:?}", solution); +} + +fn read_file(path: &str) -> PathGraph { + use std::io::BufRead; + + // Read File + let file = std::fs::File::open(path).unwrap(); + let reader = std::io::BufReader::new(file); + let mut lines = reader.lines(); + + // Parse File + let number_of_vertices = lines.next().unwrap().unwrap().parse::().unwrap(); + + let mut graph = Vec::with_capacity(number_of_vertices); + for line in lines { + let line = line.unwrap(); + let weight = line.parse::().unwrap(); + graph.push(weight); + } + + // Assert correct number of vertices + assert_eq!(graph.len(), number_of_vertices); + + graph +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn input_random_9() { + let graph = read_file("input_random_9_40.txt"); + let (_, _, path) = mwis(&graph); + let solution = asked(&path); + assert_eq!( + solution, + [false, true, false, true, false, false, false, false] + ); + } + #[test] + fn input_random_10() { + let graph = read_file("input_random_10_40.txt"); + let (_, _, path) = mwis(&graph); + let solution = asked(&path); + assert_eq!( + solution, + [true, false, false, true, false, false, false, false] + ); + } + #[test] + fn input_random_11() { + let graph = read_file("input_random_11_40.txt"); + let (_, _, path) = mwis(&graph); + let solution = asked(&path); + assert_eq!( + solution, + [true, false, true, false, true, false, false, false] + ); + } + #[test] + fn input_random_12() { + let graph = read_file("input_random_12_40.txt"); + let (_, _, path) = mwis(&graph); + let solution = asked(&path); + assert_eq!( + solution, + [false, true, false, true, true, false, false, false] + ); + } + #[test] + fn input_random_36() { + let graph = read_file("input_random_36_2000.txt"); + let (_, _, path) = mwis(&graph); + let solution = asked(&path); + assert_eq!( + solution, + [false, true, false, true, false, true, false, false] + ); + } + + #[test] + fn input_random_37() { + let graph = read_file("input_random_37_4000.txt"); + let (_, _, path) = mwis(&graph); + let solution = asked(&path); + assert_eq!( + solution, + [true, false, true, false, false, false, true, false] + ); + } +}