From 0198061d66295bcd37ecaf0e8429f09f2b4a92ee Mon Sep 17 00:00:00 2001 From: randogoth Date: Sat, 10 Feb 2024 14:05:25 +0200 Subject: [PATCH] basic attractors and repellers --- .gitignore | 1 + Cargo.lock | 75 + Cargo.toml | 9 + random_values.txt | 10000 ++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 189 + 5 files changed, 10274 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 random_values.txt create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..2f3141f --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,75 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "traktor" +version = "0.1.0" +dependencies = [ + "rand", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..5f7d897 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "traktor" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +rand = "0.8.5" diff --git a/random_values.txt b/random_values.txt new file mode 100644 index 0000000..9f2b8a8 --- /dev/null +++ b/random_values.txt @@ -0,0 +1,10000 @@ +11733634 +387227151 +2797658504 +923068048 +322483586 +3181034116 +795416411 +2247951927 +1006035668 +1299096361 +2388972500 +2619418309 +27452730 +1028076398 +3176128502 +4131741725 +150538202 +1820323605 +1364508839 +2807430474 +3115430477 +3270478231 +1794871365 +2754810485 +1219059862 +3038245417 +1401990958 +4159970230 +2075890980 +1728052613 +4151892230 +2738963531 +2297313930 +2410379393 +1306587139 +822791052 +3659943007 +235851780 +1005485659 +329420874 +4114370772 +3023999412 +2958403548 +3738285985 +288054680 +1011709665 +625313083 +158720700 +528002229 +3114016574 +2155137540 +775930073 +3094107434 +2089257848 +252659578 +808665251 +595139836 +4043140760 +2562601956 +2509167815 +3137131662 +3845065666 +3584754671 +1014573100 +2145608343 +3216411847 +960533483 +3725153632 +2779755750 +3907485395 +2772259671 +1252568917 +485092039 +1111762069 +2975457719 +781310338 +1805728509 +3110975521 +1260776441 +2427351484 +725877092 +3327320159 +2858448272 +2057199752 +3813572600 +1621159656 +975881215 +1386061170 +2119628469 +3641572764 +2440923591 +3826164049 +2897112207 +2836550859 +4118765993 +3554949536 +3956954921 +3233528427 +2365340606 +4187936871 +1144613737 +2323895856 +4192750546 +3873712507 +148144727 +2560170690 +4263823282 +2074237896 +2553297874 +1198393026 +1585358759 +275439813 +712413642 +961883300 +1594081846 +3297067167 +1620285722 +4228996334 +2390445714 +2263735909 +2752488117 +3992924718 +1314169794 +556148406 +3535377467 +513820772 +1659172483 +11730247 +2292965048 +3497423790 +2111812651 +3013852592 +2347562279 +677297368 +1627835996 +754098488 +2318149312 +2128317790 +4251845640 +459805046 +3643896923 +392920915 +418915353 +3203792414 +3616414424 +804258591 +3771991100 +2814345886 +3242552952 +1376131658 +1669701717 +3974052690 +2575647763 +4030036860 +3791216320 +49376153 +3383707535 +2170433704 +4105499992 +3523202532 +3679324545 +1546174185 +951743241 +1730440128 +2954990111 +4025708835 +2498455797 +4138039839 +488640711 +1992932607 +3904551569 +3841086448 +2749032375 +1343302158 +3717963430 +3245398575 +411640587 +2213990975 +129098516 +258761549 +2191402044 +3713245087 +4196023599 +1924249622 +4250374710 +103135133 +1899764402 +2164122688 +3472881797 +575010161 +746693413 +498195774 +3740864424 +1438702322 +2201318397 +3174556510 +1082309123 +1802893539 +652718831 +2818201595 +3877223148 +3614041570 +291033769 +820305777 +1951187641 +3396097612 +3866437864 +3310496744 +522582755 +3291269053 +47049538 +3043058052 +2176670460 +493099302 +3105952543 +528348270 +2718692404 +3356781856 +2241368320 +2804834545 +1962059752 +746168637 +3692836828 +2166899814 +906193405 +840923006 +645944316 +1012441744 +1560013833 +24046603 +497815682 +3523344672 +4156679195 +2634819494 +312385414 +3653374316 +2710778390 +3412544345 +3640996023 +2757006152 +3649845382 +1520639532 +1853831913 +2169914341 +2949485026 +3143672165 +4141798237 +4167847928 +2150259503 +1925182808 +3419943338 +4294434249 +629543727 +1609826917 +2944873161 +2121631471 +2799174357 +1603403932 +274128665 +57716222 +1336805972 +3969935202 +2426677357 +3989834571 +446437560 +2577611661 +2964215468 +687423337 +4000748952 +2327187214 +726739035 +197639480 +1639170003 +32417639 +2547593471 +2974088952 +2656672279 +325980929 +2099875292 +3626663281 +3371918219 +2264447222 +3796324144 +42808801 +1561044688 +3889280572 +4085146859 +1953355356 +1826339086 +1226360755 +2863005955 +2098046254 +3132413246 +1930369638 +3116082852 +2247127838 +93137513 +1610086081 +92397815 +2861498339 +333373818 +3924067454 +3524456597 +3723824844 +2458399121 +2924953259 +153835772 +4233917604 +414438578 +3454844707 +3312690104 +313779499 +4249212318 +1386044878 +1170576414 +3597270028 +2306169892 +2036425996 +199133640 +2210049530 +1980569557 +602430173 +581872136 +3810180436 +2626139104 +2783655466 +2347225919 +4049988243 +480729947 +3516661273 +2178217002 +2083843540 +132970232 +1440972652 +803159763 +2211306891 +748246620 +3920104794 +954566838 +2044611360 +422071958 +3258822044 +2998850116 +2529271462 +1592741052 +3371882132 +949731376 +3239873976 +2556510505 +3602152023 +1111267488 +3362486474 +1585041592 +1271368206 +470352127 +2273312674 +273286386 +2218879906 +2298748842 +3767577405 +891848922 +2377741426 +1528421853 +3397992705 +3228835394 +2319357399 +352313476 +1839781700 +640439923 +4113320725 +2791845429 +3039697767 +244014281 +2624172883 +2698936789 +2455386956 +2779655757 +735937156 +195376263 +689098930 +3661776770 +1447680237 +1866667647 +1876855417 +3446400974 +87997877 +2129347799 +304065580 +2296255662 +1467861560 +2920345232 +1323542363 +3974846417 +2728144666 +3916810095 +827866532 +2787052093 +581934152 +967246433 +1239223236 +3341089612 +932895731 +856310772 +3453014682 +3510562380 +3798853214 +3427860727 +189236723 +2445140862 +4114437067 +674102319 +1773129284 +3326244291 +3422368295 +1914606449 +1928492906 +2234975756 +3826762253 +902857189 +1476276331 +3714231403 +556315436 +1950332879 +1132756160 +760961886 +4194852551 +841080557 +443209153 +811470006 +915382087 +3553157905 +4266571112 +3604549252 +3253618638 +3297122068 +3030288743 +3227403608 +373213851 +1636710285 +3688091495 +1801030383 +1495017391 +1352449898 +472299822 +2359225166 +205175655 +3305298712 +3518208164 +1776402019 +29219336 +78642241 +3500924596 +380882984 +1009312358 +1163719605 +1749524171 +2753442632 +3040882589 +773991126 +1733342434 +3395940156 +2982709531 +3029978140 +2618734495 +95176902 +1522178530 +514149587 +432221487 +19763410 +4131531055 +384497867 +4267784306 +3015354244 +3276973920 +225456589 +634951496 +3460239332 +4027240440 +2030208125 +1518288336 +23718305 +3075368095 +1425938683 +3948741271 +1414550131 +2440651503 +2283377069 +1318062470 +2947918861 +304013034 +2392111527 +2859015920 +1872490756 +6002893 +609791146 +1031846837 +3415622474 +172994316 +3884376896 +1400975818 +2416565628 +783518958 +2699415615 +1612800193 +505701558 +214685897 +3950874861 +1686419778 +3367331390 +530359937 +280382656 +581325085 +1592813903 +538529720 +712384024 +3113521001 +2934909476 +3242029033 +380506885 +1106518178 +1659480061 +3759965248 +729071253 +2975616995 +4229872015 +1187996328 +2196911707 +2434995539 +1114072642 +4196333040 +1102423416 +2681357864 +418715839 +4023323583 +4110641667 +3988181267 +2208054510 +2204907709 +588629482 +4132729355 +1297849472 +818703672 +2796863845 +629532841 +2250781782 +1476584586 +339005172 +4199482880 +2801331434 +3312783548 +3124946000 +3204744237 +976879232 +3449290264 +4144666980 +2231246855 +3433925282 +2399618976 +1081297014 +2146407773 +2475846419 +3300630512 +634456770 +1083828117 +1796596135 +927688902 +472968999 +260655112 +229443090 +2465662540 +1813085653 +3213580868 +447444628 +4021256001 +3278887625 +219376765 +767314795 +3775974470 +394210685 +962423007 +2910138950 +465277751 +2310202011 +2943645058 +1021117018 +1728008420 +3214743007 +1781212706 +1476003716 +984383719 +3611457035 +1595331717 +3274028886 +440733630 +3011546677 +856289705 +654213009 +1483431547 +4111342016 +3909349971 +3257399791 +2735871207 +3411887841 +1568180768 +2504341074 +2146040729 +568276747 +2519869140 +1882691994 +3672883203 +2210821484 +511636971 +840165021 +4172335784 +3109107223 +2777326540 +250931070 +952868217 +2122082871 +3432894290 +3881639748 +3782573150 +3744720262 +3811890633 +2603580404 +3131665634 +4217628566 +4147054654 +4019023891 +3388125093 +1795451630 +212291825 +1649579804 +2748731116 +1732202769 +3152681166 +2428411818 +3687166670 +1066985452 +1358724475 +266673710 +1674287811 +597980339 +3976919483 +557928664 +2622342581 +1264373611 +2907983003 +3657212566 +3436870460 +2914321638 +3273600183 +3589981893 +247694909 +53770387 +3879767114 +1968047019 +2478630346 +2990300510 +3196351401 +1353102676 +2844064403 +3443058750 +3021770392 +111754426 +80525444 +486471518 +785608158 +1638376777 +2936236964 +1822535044 +3378519298 +3154720979 +599854154 +2378308542 +475240782 +2169983793 +4009110167 +1182925265 +3077118916 +2571894436 +854169937 +4289310636 +1424268824 +775409503 +2540004716 +1447670356 +2777320248 +2302930240 +2584488099 +500780780 +2717684999 +2112442371 +404852976 +78736717 +2432165702 +2137185726 +281088050 +3512330282 +1003523176 +885760699 +701044146 +1454601573 +4183450936 +2624857075 +3138738813 +4140621527 +896636960 +359355293 +2869503909 +1178627079 +1134918788 +2027072012 +1961808443 +4279989716 +3132608904 +477234115 +1665709284 +3056790416 +3113131872 +2855476347 +1644373998 +2341725508 +4064892822 +1043149367 +1569148310 +2545735840 +97932147 +430890571 +3027756263 +1530734088 +1928150992 +1142474402 +3275616515 +2080306798 +207170011 +1202472653 +1063064383 +2866904254 +445687564 +3246569678 +3692115599 +1971810377 +1298772762 +2449927608 +61155084 +110528028 +1305654006 +518115988 +2253331990 +3652273675 +4133370258 +4076183878 +3127514935 +2542288881 +3075917077 +2882610253 +262518843 +2313791245 +1003838933 +92187613 +1349735372 +241757463 +1824883323 +800448687 +999754827 +1914619017 +10385052 +1128755050 +488901115 +1738036947 +918740279 +1018107824 +694317749 +2399125504 +1120508177 +1427892455 +2843328638 +204731174 +720953194 +2136886624 +944705507 +640682591 +59016688 +1320624835 +2278917552 +2348414189 +2735844338 +854372031 +628786907 +3902268111 +2350581453 +1910428846 +1997661002 +125515500 +3144476376 +4207545898 +3350408591 +3169650230 +4130752944 +3280869350 +2060721169 +4055080916 +1214783388 +1267309838 +1567651911 +4260219378 +488020015 +2357473848 +4272846040 +3318123498 +1390654554 +997709811 +233041771 +1330167784 +2713664473 +134098813 +1658105871 +3473391130 +2404452284 +189711461 +3900574451 +3933347509 +2315276434 +2150670607 +1579040085 +3427133297 +932192781 +708281415 +3911774757 +1543910977 +1030018647 +1470793444 +2371206049 +661523691 +3739004692 +2314081102 +2857637242 +3555654341 +3600190883 +3668401856 +3776748800 +2571153861 +2421193507 +1878637460 +2761590320 +1241045310 +715368652 +2607629551 +3348222671 +2164175702 +3072824493 +3606174614 +741614143 +3089991759 +2953110068 +1263165780 +2041519986 +500261200 +4257737583 +3444201791 +2974356224 +3512567671 +2727381895 +1870283059 +3661638605 +391983793 +1281079410 +2036731095 +2322378859 +1744117133 +357671465 +2785465407 +2353688166 +2424718862 +2537852919 +308049869 +1882016264 +4250227138 +756223683 +162281165 +1241261077 +1708868967 +4189480959 +824790004 +2144598721 +1872432932 +56334402 +537447859 +1030739372 +2283173192 +959153430 +2080814319 +3540112230 +3921218128 +1053808642 +652380415 +1585020892 +3429253054 +2103517790 +1033286510 +2110416734 +283409362 +3198259781 +933762234 +3739457573 +2452103895 +761053256 +324150000 +1790876352 +2942831174 +1629873625 +2303319290 +2433523614 +2078097469 +437006442 +667462270 +2999377482 +1279240761 +639763377 +4233725340 +3398721571 +4038816124 +1864976101 +1282485023 +2176050432 +1158188490 +1159692123 +2207370260 +1414026554 +3589021797 +26201306 +4159808603 +3935112911 +2934156457 +140504477 +1231839038 +3240668315 +389334727 +3676719791 +2357174688 +1011975964 +2278387315 +453482405 +2774528845 +1587982011 +3512742410 +1848858474 +1753564614 +3714436034 +543362728 +3192011633 +572958721 +3863029439 +797541160 +977677061 +969279613 +2348682044 +3311294942 +3581550179 +56090814 +3197109272 +2708014254 +2455641818 +1001188043 +3399428026 +2803198481 +3873276762 +745551675 +668867089 +2854885372 +2163743857 +2128194760 +2894944044 +1104356005 +2058048706 +4226917329 +3608629183 +3761780562 +584657972 +3562079441 +3774623916 +580759603 +562716929 +2100364236 +1550017180 +497780364 +3417263565 +3343120174 +2052445427 +243482081 +2047349158 +3448614238 +1189855367 +1885445745 +2021259319 +2675209430 +1749157803 +870030317 +2641162793 +2322653732 +2291639557 +576194159 +4292497442 +1021883125 +1986258688 +2739045813 +2077351381 +590201163 +2430925725 +3072168904 +717304975 +1812453648 +467143860 +4257970744 +1316806128 +2311816747 +906243735 +4194904615 +1064236201 +3068756080 +2931109368 +3319859355 +250642682 +2542958706 +332839712 +1876208596 +2145731357 +2341871607 +1980797794 +3999211826 +1996423113 +4234842572 +1940657491 +2292872314 +1648910422 +3690000569 +6756729 +293153138 +219955022 +2020743201 +2942076987 +451684904 +461810147 +260443164 +601464474 +1900534212 +2190227829 +925362946 +2432682548 +2673336204 +940447383 +3692102015 +3308185545 +571121519 +1283461211 +101212987 +1162398223 +3900528904 +926984104 +2279343673 +734708963 +3942111075 +649549285 +3274725298 +283153918 +3327068372 +1881409656 +1233873206 +266313483 +1641799968 +4278932761 +811717662 +4026310547 +4127560499 +2469205224 +745714925 +396889234 +205717469 +3152325621 +2434949790 +59123128 +1086151831 +3813994463 +3614206712 +189866965 +3757249321 +780976484 +1946312068 +184760875 +1611345961 +2784184747 +2406145610 +4162102749 +474358255 +1935147200 +4276666335 +3940185490 +3028679923 +1833563628 +2062211823 +2665284877 +1897433466 +2386206170 +526621737 +379937392 +3864809021 +239378407 +465697606 +1354677967 +842184398 +557051762 +2460906393 +4166933267 +2083467900 +1551956653 +2474595545 +141475080 +3521608636 +3430811083 +3587746610 +3672199899 +2366564085 +3601832401 +1645676249 +1656771830 +2953909498 +1961328309 +3031277364 +3566778776 +1012829079 +656639563 +2243364384 +868441815 +2561993762 +2244836764 +1623518219 +1230847223 +3544009757 +92627029 +3021194252 +2630584517 +1015713767 +52326881 +1967867742 +2970313413 +1127250522 +777610903 +3352328296 +1035670504 +4288203839 +3524209519 +1148365498 +3529917563 +1325321078 +3707321864 +3117680007 +983824308 +14409311 +2464574599 +2998557654 +2390872169 +398581205 +2991047615 +2795026118 +1666596871 +3328021112 +1060246692 +231889069 +2157884208 +3958733559 +1004433380 +174762889 +3946577781 +3023041978 +1669822115 +2252023460 +2949901378 +2248803165 +3053631336 +2592608056 +4058045623 +2332170669 +3165145431 +3054922548 +1719123438 +2927683026 +683394112 +2682426449 +3165668432 +3708375051 +1761102435 +226742329 +4253589332 +339424970 +1772541307 +330662566 +3476770814 +1173515023 +2429732185 +696029174 +1748329534 +1665513357 +137088014 +3984306704 +3441028644 +1871546139 +1066721307 +849075493 +2806272064 +10885400 +3123483781 +1280281870 +2977898519 +1185445292 +2323070667 +784530496 +1053732125 +1072041541 +2091815708 +464659761 +2247177245 +1579562986 +1208939293 +4081580911 +495189643 +2345669612 +3210030591 +4145455370 +3826175125 +3093200035 +2517614581 +712347556 +2592821082 +543562564 +1377311277 +393188688 +381721560 +732577263 +4174833259 +3460938168 +271029443 +1209714092 +1923695149 +60642793 +278464555 +2689347157 +1113775484 +2966424332 +3863615391 +2877920545 +533375740 +872757607 +2884329134 +2863022917 +1503007911 +551109132 +946900750 +2573503408 +750604618 +2717053000 +3331327795 +4317452 +3584327908 +3779211512 +3770249231 +876600215 +2510199889 +2122361366 +830890469 +586102823 +606624573 +2187888568 +3978650888 +2842168021 +1653753297 +1364893092 +4092298789 +3080622987 +2637110835 +2591045764 +3419944440 +3400652712 +2735879711 +4100678678 +864680461 +2891813762 +1146561632 +231938006 +1099071171 +1146553641 +2999298338 +855495556 +4065761584 +3321651355 +3877881997 +450063918 +253389222 +2830089818 +1158498914 +2955847671 +2598713313 +1265940774 +1985063666 +2297920522 +3515659567 +4099691609 +438872109 +1820983052 +665773884 +1030467040 +402864223 +258709537 +1036893764 +1463409562 +1314436194 +2526445865 +3818491598 +844805898 +1982443902 +580573616 +2164134585 +951838921 +829263276 +1624387762 +3277310200 +3285203842 +1313916450 +734579850 +495113417 +2644735696 +116988643 +2794310811 +2314414759 +4130793340 +470689236 +406906190 +2751086694 +3104847292 +3888034029 +3175589361 +3557944951 +90118942 +515876907 +3315329072 +5246378 +235848476 +965891263 +3025399616 +2671703371 +4171445244 +3258192012 +2712667104 +2993389686 +2311106662 +2706712202 +772879321 +3333183976 +1560268016 +3300484389 +2656035371 +719617393 +1345317283 +1157272286 +313764172 +405768091 +2830418612 +1260982261 +172996578 +1955455613 +3573997755 +3319151763 +2974282041 +656314673 +2549485057 +2576684481 +1058137320 +1053796533 +1931002942 +469321073 +2801899646 +4065398319 +983675923 +2587898364 +235764411 +296911946 +2994216147 +2986461468 +3634924817 +2994429617 +889787596 +59518826 +3924637193 +1318708529 +2548600248 +1856721665 +4274475320 +2356971964 +883542618 +1043339087 +2567523602 +787662000 +1240906333 +1096732705 +580778572 +1203416752 +1548959214 +602035234 +3980541761 +112674019 +238570565 +197322807 +4175434171 +2820046672 +729333417 +582897428 +1065885545 +2562765244 +1603314824 +1395388097 +4233970665 +3991939054 +2228170700 +1532190555 +2095431882 +454269994 +3384853637 +150934692 +3565970640 +3674561835 +1109949135 +2687938127 +3673837405 +1117827207 +3944384878 +3629724319 +3623624841 +1026107049 +3410028801 +3484168240 +393557827 +1620951524 +2294662186 +3986275756 +4205771245 +1158551233 +1511460485 +682748909 +79907876 +745170995 +3671432223 +3307993698 +720041753 +3943277627 +2057293068 +3433805472 +887890395 +3342527778 +133107390 +3608004382 +2898153417 +532789606 +1719953815 +2364202214 +4053008230 +1106052734 +483990882 +1370177910 +799420375 +234690865 +2545633777 +3909669905 +2747343559 +1707795091 +3093314103 +3648588426 +3008434098 +2897192903 +3381571278 +1347308923 +1786266365 +1288506735 +2381876196 +2386011903 +696033673 +3907069792 +2843298285 +219468225 +3527150981 +3226371243 +938702512 +3570943954 +547938584 +1962914570 +2626992686 +1523357150 +2885333271 +4285619087 +862100108 +340824776 +3581243398 +606187558 +3632619274 +2163405104 +2524935197 +1609614249 +1023015318 +1984607617 +3544508391 +1317728485 +2457233140 +18366939 +949626099 +699169719 +3170774997 +2155492916 +2787835051 +362553229 +607170894 +2112664511 +109394397 +1463945834 +3951970385 +744715328 +798701529 +464797989 +2963775773 +1489114367 +2761627516 +607721034 +246810396 +3402250569 +1374739749 +3811812102 +1307696369 +4180056654 +2385998851 +986281762 +3769003335 +4059600151 +2071260397 +1184775867 +1628958932 +1974071053 +524312532 +737382880 +3481483256 +1200231861 +3493950921 +2093459955 +3741814601 +2200003491 +1908726269 +2968976701 +456353398 +631569165 +182291382 +2636621893 +1271938644 +2664585166 +2676927084 +3375812360 +3640578285 +3775556878 +1758132582 +4099750447 +2371028781 +4238203015 +3384056260 +1777083920 +1602780835 +955197763 +4227828421 +3972069889 +3325799 +328364363 +1685652051 +4293952201 +1452610933 +2234100236 +1033744939 +1428949839 +493738718 +3289501441 +4179179620 +3857494358 +269521993 +3216439718 +215118565 +767339972 +3664456336 +3158218274 +3815022665 +796221128 +2529372927 +843443077 +214263178 +1481805919 +3917035919 +3206055008 +4035868110 +3341112173 +3390899796 +2471483270 +1864215183 +1143906133 +2131591969 +1746080778 +3149290413 +2729472584 +526382174 +2299665992 +1503261920 +4275156751 +3912987244 +3240518742 +1696948284 +1558641997 +1445216858 +3345533090 +2752113417 +3078048849 +3616493515 +3538357619 +1635463735 +2334967184 +3737409688 +902959599 +354108114 +391163795 +2444265269 +894199318 +4013473821 +3806287173 +882898692 +1716597498 +1997665454 +2796383066 +1219410093 +2153734203 +2024470762 +84438485 +1529679033 +2472796182 +769107777 +2468490697 +2445758405 +1532450227 +2320384347 +1655063126 +2819040603 +258911833 +3781529038 +3459090801 +2431066523 +3254648856 +3310664426 +2801207625 +938031928 +3426747484 +2704619765 +91130207 +3700882663 +2671252539 +2011963152 +2787838127 +256997018 +1807472115 +1209880441 +606379714 +290740573 +2941961156 +22094246 +1371420378 +1774439591 +448962234 +1262111738 +830852952 +1864634890 +1454660318 +2461456619 +2299252933 +2612943295 +3714583911 +1562234306 +1195903925 +3487398571 +4167381443 +3115866469 +101003507 +422300583 +3189550772 +2095478786 +622509086 +1261344807 +4064312517 +3918920302 +87818215 +2503140292 +423794763 +2605759231 +4198297774 +1213320190 +12797724 +2313810378 +3958328445 +3175827344 +102618920 +3067635974 +1646618527 +2654665292 +1244908866 +1003773434 +2909945727 +2494670511 +1306492476 +2788644801 +3316607236 +3887449443 +445554976 +1327383400 +1516384482 +384389219 +4028964135 +1178636438 +595208881 +2198487145 +403543623 +3509713515 +3433660893 +738620562 +1428128095 +2445837099 +3272553703 +3940384851 +1966835018 +2815101466 +4224039653 +945806672 +1291136267 +724042724 +678570140 +3694783588 +627248399 +1873373752 +629032993 +2361351039 +3313055218 +1764627724 +3393457223 +222721607 +2459503868 +2543837178 +1208524274 +2774449433 +835222244 +2275997785 +1059253230 +3586722156 +363741030 +2801569839 +3528285853 +1005839707 +2296367093 +3579673267 +1287650396 +485743160 +3336082804 +1102461824 +3420329254 +3698411039 +536998494 +49031263 +4212724288 +2640505991 +1598858869 +1577119805 +1879274294 +2603948069 +3250569601 +2663870501 +1142673684 +865025316 +376895875 +1519092899 +804405453 +4250727491 +21559721 +4193003362 +3429674506 +3830683481 +888166859 +3148508250 +2325542116 +2269800415 +34172501 +2078718957 +2919223391 +3989180482 +1985455890 +864307715 +3972461881 +146827851 +1043236923 +3352180567 +1713556056 +1832588637 +3481921431 +2936384930 +4084211771 +1812120115 +111263472 +992618535 +474451789 +449215139 +1434403606 +489703153 +1493110098 +1636207091 +2796597365 +2455964150 +3364954953 +3628325407 +2701432695 +3089346604 +3889996624 +3976797213 +3171814656 +3792812072 +4154697497 +1139312140 +1781441081 +1177516726 +4236796778 +1388883566 +1033069126 +263155761 +1215078184 +1030088429 +611800976 +3253627438 +3344590162 +2779665181 +2497212543 +3178420767 +3490112830 +3047817178 +4074427168 +1935042100 +1276644772 +1214603165 +2096586040 +1135217544 +1402658886 +1213516198 +416448492 +183288880 +4199170424 +2006063832 +1513944928 +2017629618 +686934543 +3015588533 +3952919792 +1743150814 +1812164801 +125584747 +3542745568 +2707782755 +1847174429 +4049811137 +3922387800 +2833969000 +1815723950 +387632541 +711137357 +3257446291 +2738773792 +3144149739 +1071695539 +2985543783 +2333075665 +3386353139 +4050924797 +1932148301 +1394364929 +1628577345 +295760270 +488228588 +4238207876 +1091102955 +4267961773 +1557366254 +3483120767 +3791317684 +1300044185 +2778634477 +2251790768 +3314453201 +983781865 +1441627889 +3816072649 +2252811557 +117099763 +2812323868 +3561697422 +1589189315 +47341289 +2399698710 +3134856139 +1719231030 +3291339215 +623453491 +323891798 +2310927089 +1126362333 +1775061866 +673999290 +1002195186 +1775006956 +3640418518 +3160335228 +3652728348 +3688028897 +3308973907 +203792064 +3913690498 +3947516663 +328993473 +3119075399 +2304133033 +3588703281 +1078319490 +1139776690 +4022171907 +2065580176 +3548139048 +1244751417 +3171151476 +1529664962 +1695049214 +1745870680 +1898089691 +3733360547 +762181330 +2378871284 +127141688 +2285125429 +2920279571 +279437218 +3211100148 +1484402038 +3964792040 +2239529138 +89034926 +3162414065 +2977079951 +3801228229 +2580338092 +3125778304 +2846849444 +555822114 +1461801557 +454648302 +827567483 +2907886298 +3853973958 +4090022006 +1116602888 +3395270211 +3367485119 +2846126255 +3973277265 +1229950153 +872896962 +390442261 +3605343394 +600108392 +1381588484 +201908905 +1819457243 +2421190679 +2318008005 +2605310493 +3359023898 +3583975341 +2752109161 +2708865778 +799414276 +1409418507 +2414186167 +1219450404 +1177836305 +2805886901 +423603343 +2573241281 +1618990262 +4190695296 +2180913400 +4029464760 +283488451 +1771761254 +1803668566 +1445534080 +3779520282 +3313125087 +3999751149 +3483551979 +21583561 +2320159458 +197092163 +1390072899 +2262244784 +3415716752 +2828566304 +143911072 +3812664457 +2581703347 +2879638590 +3250586618 +1179579978 +986014200 +3282024971 +1769949210 +1882747540 +3671155360 +3564519690 +3366202831 +1060266639 +3159523006 +454168079 +4119955103 +4042864845 +2286953856 +774415705 +2840442847 +596744441 +392704173 +3215006208 +3600482595 +1971986434 +4266954045 +3928680748 +1072731711 +1728410351 +809808323 +2631431799 +3474472814 +1742844525 +3051177169 +2622182415 +2606604569 +3641057589 +3706378604 +1306781988 +3063567966 +305222476 +1255006629 +5338818 +200884911 +3345259831 +937740521 +1276511629 +2385218098 +3148051863 +1407762179 +2651165036 +2608393017 +3465064634 +3130130620 +3975079318 +1063406339 +3153557723 +4280233159 +3668565719 +4225929982 +3295907052 +1885631136 +582792158 +3620138996 +4134234937 +2075950562 +2612866651 +886548333 +486968877 +108545788 +401550016 +1741677181 +1903265137 +755557682 +2215767512 +1124314281 +2949787371 +2810506400 +1316700045 +308622017 +4127953611 +3558008944 +736452414 +4023315097 +2748253197 +749369746 +3218287140 +864865222 +1779079 +619596163 +2099740015 +1297616321 +1349190420 +1252169919 +3103643158 +738667792 +2486081647 +1765879977 +665761176 +882948104 +2380946114 +1244227016 +179247461 +3398451554 +459245460 +1986667508 +1697796541 +623761773 +3972786923 +215455592 +3195900397 +530482474 +3770398056 +1515011857 +2064193214 +594361862 +107421741 +1883451095 +2304355803 +1753591417 +672738028 +839111724 +1893482841 +3309027273 +1004491492 +1430137508 +4015913045 +1591145784 +1752891306 +738943816 +3302002521 +2480634565 +3274895880 +895603978 +175762113 +322228076 +4238093090 +4133748092 +768863038 +3969860490 +2184406429 +1766329522 +2450329854 +4273825236 +901861192 +419149208 +2584260553 +4028539413 +505543258 +1871979635 +426576491 +2129697605 +708939966 +1013895960 +1730478049 +3582235095 +1535890059 +3338967254 +486913519 +2021520407 +1405799709 +3761240252 +3079003628 +2749601605 +796611959 +911515611 +1703291642 +3717226415 +28418072 +879454460 +3560531366 +304483471 +946982459 +2948115421 +4216337852 +817275394 +2381793112 +2639428323 +1087581232 +2820534359 +2864258129 +444148212 +2086516837 +1278978808 +296975690 +2319352066 +2993413253 +697174870 +3134902562 +2764789328 +1899741814 +3000658716 +81542853 +2236947944 +262424328 +1586707952 +3328286398 +4285196191 +2191337142 +3271057350 +1437578369 +3266336129 +169086591 +3827762388 +3437600030 +3724628604 +3996062794 +2447377021 +1756890379 +2762176587 +4091267529 +1698253276 +1189632722 +1325396453 +2435312110 +2646791732 +3343274136 +4155793903 +3632759904 +2308405896 +184521533 +4125536282 +2451345605 +508822413 +4098892742 +3627161500 +4080084384 +1354463758 +949153653 +455548749 +3245167089 +1701843314 +760366392 +142572922 +3088097693 +506570983 +1994273181 +807903047 +3622455917 +2657868551 +838651303 +3699467381 +1764383973 +1052283384 +3459448713 +2293846906 +3037369482 +1927830579 +4210727941 +2767918927 +4229344204 +463351458 +1975172190 +2511853496 +423263659 +2957850341 +1997326361 +2452248066 +2953046474 +629593613 +1749259435 +1136935523 +1139531642 +553556627 +1834366935 +1151816236 +3766754076 +729366865 +3216046232 +3100728216 +2470903170 +4207173946 +3165706238 +371744979 +497308962 +1592782748 +1554233414 +2549156513 +2888119992 +754831122 +3838376396 +3107736068 +183266291 +1284458228 +2850178904 +225321998 +3752177238 +1510801627 +2241569694 +1550374200 +3693955016 +2727179600 +849675506 +3837727536 +1942583681 +441802343 +42794910 +291943731 +3945001845 +1550677274 +1919456822 +473332417 +1592110145 +612689720 +3306819280 +1661356818 +4151406221 +1044597007 +2490804366 +1482695649 +1196795352 +1406349289 +3625332478 +345807678 +1778842893 +2963431418 +3313302353 +3861145130 +2645391818 +495379895 +159462147 +2830582692 +211816728 +789224519 +2837572883 +1901486255 +2491302698 +332268598 +2451721821 +1925154405 +3143279741 +3033313472 +4127302003 +309342652 +34866290 +4069052977 +592767547 +1075173524 +4150543492 +3305019441 +287871555 +4048158788 +4169369505 +413177012 +516539774 +1386190127 +2405107744 +4156529537 +2655784963 +2216875018 +3290954325 +2349388364 +3934234653 +3601847920 +1840010875 +937652816 +89152451 +355435079 +2848590420 +980101547 +2439643914 +425450406 +1958840308 +2113895732 +301761145 +2285428130 +308676734 +2126464210 +393354738 +520745943 +2741723040 +1905411470 +1680331768 +4168601096 +1691576057 +555680687 +2242049506 +166225333 +2043362935 +3793810761 +1843207147 +2561656547 +2127712818 +2676334057 +4122030283 +344110557 +112349010 +3503336838 +2664900981 +1883426496 +1928689175 +3101754484 +4204166041 +2477512240 +2854380840 +3901183465 +3804510480 +610800695 +2383404112 +3694996004 +1425067004 +1158964909 +1594513045 +4114376893 +3365365985 +1304106415 +3166931472 +3698314344 +1972170773 +1904209367 +1146685266 +3974062714 +3461223524 +736741249 +4057093557 +2509224852 +1928167916 +1138302905 +2276047286 +696172074 +1686696273 +2324072822 +1511099615 +1677089608 +3167059319 +4065499167 +525655295 +4289276248 +781013612 +3328849938 +1621621789 +215440255 +1450830092 +2749361166 +1689517847 +2081322454 +2191666470 +1135467844 +2850801070 +2937612211 +3286912109 +390256100 +577834352 +3078620360 +665427901 +3730049380 +1038305206 +727998750 +420353331 +737099722 +770518211 +1369830451 +2922612995 +1063455378 +2661751385 +1840782768 +2960745411 +4222124933 +1650856323 +1892832762 +224822750 +2768804587 +2124644147 +1547920315 +1480108510 +2404083511 +257114847 +3261406390 +27614400 +3387982301 +1221276475 +4107606111 +3827982105 +3967083724 +4133480027 +858144069 +3152095738 +1830693469 +2607873203 +1557146042 +423068397 +1661968785 +2153672991 +1916818633 +2210970365 +3230944067 +3917183345 +3968607739 +3083528922 +2218629660 +3671302781 +2929306539 +1327654861 +1067539993 +151822582 +825826259 +1887819316 +711461116 +3337946791 +3956552725 +1299615164 +3222308369 +1685622966 +232767640 +1482960050 +2508417829 +560978732 +2026322658 +173486309 +2842774947 +3309797884 +3344983546 +1372533081 +4110313385 +1791182993 +3800766695 +2270318575 +3233544887 +2808003094 +1190201546 +860701214 +3078516821 +3915015795 +91634137 +3894963073 +3988643518 +40246363 +1866007229 +2117644531 +402130069 +3345315507 +660361638 +2277241065 +327531886 +2022819959 +419248547 +789747941 +2108789971 +880019248 +1327065473 +1833233959 +4084698828 +4040218488 +2253536627 +349530456 +1674813339 +2764280724 +3182396202 +444180047 +3052286155 +1051447085 +1094998715 +3485604419 +1886601645 +2562593043 +1671063887 +3342615106 +725604891 +1920787059 +2356398892 +731326174 +4264980619 +3725207325 +1600861522 +2831698520 +916771403 +3655759654 +1824474792 +3727482832 +4195166734 +1243124903 +2874855219 +5810166 +2540171359 +1782136914 +2837962837 +576263472 +2749047700 +3174774098 +2385763239 +2958454767 +2374988032 +4138690340 +172412181 +2804288606 +3865795530 +3113812159 +49208582 +2568541422 +2398261257 +4276111680 +3228689904 +3530670594 +2874269070 +1453998240 +3120242019 +1747602210 +1636200879 +3877283573 +2328064808 +3944479977 +2664205171 +4157002902 +1209347932 +2350269794 +3756588873 +1365857068 +2184836385 +824505132 +672526997 +792503777 +4083001506 +1903724085 +552996182 +2932722023 +4188447571 +1358793368 +4023235193 +2756407065 +4058715497 +979523334 +1220190997 +497809367 +2292327377 +4065714243 +716594830 +1166583663 +3131055185 +583132273 +3418455817 +1566388773 +3586591183 +49767858 +1789632130 +1363551167 +2179979673 +1945174971 +3672500673 +1271316381 +90325099 +2316063869 +1785188813 +361621492 +1111164791 +3888685140 +3706012661 +111834005 +2406754674 +440300094 +3836247051 +1941676379 +3649331835 +3290000069 +717749508 +2856264910 +278389079 +2043281423 +292319462 +1925163697 +2481454299 +2880813807 +780179697 +826098029 +2681371896 +1975883526 +3726825612 +2891796247 +1520938460 +1776221992 +4258713656 +811154739 +3495010973 +2119899291 +153226042 +2306796477 +243036470 +2937403903 +1218497391 +1847022722 +1151973287 +993396810 +281872740 +1342962720 +2695800090 +2766252166 +1703308783 +2449924403 +2367369027 +3048674227 +2740439548 +2795682071 +3935322509 +1236508020 +4148500262 +1442688589 +855503212 +2306075325 +513457478 +2665114610 +4164104594 +375405399 +592041452 +2226019525 +2006418040 +973737734 +1303711440 +192445737 +1964643871 +1044221810 +623267489 +425328371 +3043158716 +2211785067 +2666884451 +2459149736 +890116441 +524225454 +433754567 +656704944 +304368731 +1282092039 +1277075322 +1580033886 +1795850130 +2442808722 +3541260853 +3491455231 +4188499301 +2613696219 +2957283510 +1542460381 +3418794174 +1587489236 +3899449339 +2062063315 +4279443278 +863167776 +1959456506 +3781935285 +3756950620 +1208896741 +1324546046 +2526355446 +1937170924 +2105167461 +2585434655 +3494431909 +3070871090 +4293379298 +2635240224 +4169009195 +2341033945 +589253340 +4202082563 +1113893883 +3598131584 +2911197199 +3147844380 +3959219512 +3464751531 +2694907284 +2223316546 +4048568846 +2590914436 +2351409564 +1886852333 +3898197983 +377703548 +3646755203 +21448943 +1442596368 +4052028856 +3696270412 +92155444 +77131593 +557187761 +200974592 +3290604853 +3712558751 +2927237806 +514408869 +2033881266 +3085752984 +768439322 +408036787 +1755780724 +2513568677 +2525931729 +4136414966 +3940843572 +2183554120 +2776182338 +3344331314 +3732473898 +207887202 +3442554595 +1119417559 +1140541393 +195382767 +524470799 +603383028 +2706808243 +2575707752 +1419300148 +2367527190 +44772322 +3070490180 +1247657842 +2238884364 +3782032847 +2198352636 +2590759836 +1941637160 +1119639918 +810781451 +1260595740 +4016974332 +4180929137 +1121292215 +310124796 +1136446569 +3288479035 +1884278603 +3580564507 +3051579862 +4040295620 +2299039961 +4183755609 +2660052774 +2750710535 +3873018258 +2368445805 +3669140405 +2263327248 +239637675 +1821929779 +4203087056 +3523942891 +3529387182 +2794285468 +1385650400 +3841304674 +4144893470 +3440282448 +2470874215 +2083015314 +1928343951 +3041034107 +3904005353 +2148461775 +1453078231 +3873583734 +2741309275 +1838634328 +4058087852 +2816188624 +156601382 +1422866989 +2820276293 +3651679433 +115647505 +3029791887 +3646246410 +317610509 +612259959 +1577110759 +3040420058 +4241139018 +2555617108 +2776392938 +1965109975 +3632376241 +3183789305 +1409567594 +1079476717 +321147780 +594930831 +3176924461 +2052423804 +489198082 +4206945454 +1966994053 +3475187451 +3974524794 +2050249694 +54148511 +2469354276 +2737566602 +2117517557 +927578553 +1589965557 +1159681214 +397545028 +986116365 +1966948246 +2164524947 +1480030093 +2385651076 +830771846 +287058695 +79223010 +2454732879 +1554014951 +1443541250 +1109243201 +2655092272 +350108331 +3859006373 +196584140 +1336428239 +3399935730 +3261550955 +3872080814 +3431017502 +1706296304 +1685956307 +1994240210 +501260527 +1434987437 +65680078 +3577946936 +3021514841 +291026813 +3122539510 +4113524903 +2439600552 +2560057557 +2040131724 +242614529 +3381930585 +201885383 +3934213111 +3573587081 +1529659352 +377464705 +140827718 +2796767080 +1914586182 +1572092744 +3335320426 +3096813323 +1564153425 +3692874471 +2982463746 +515445215 +3064182579 +2525043061 +86953131 +18290247 +3012569234 +886840310 +1650479286 +2358785658 +1310219978 +385926231 +3739718128 +2832902988 +1823059725 +3926790157 +1294208085 +1974960898 +2644274900 +4047088600 +555862933 +69374423 +518862708 +1283185652 +1534494339 +3146210063 +926539396 +3384757140 +2003817032 +915532582 +1470586339 +206329655 +2522344625 +358651521 +101146345 +3666081140 +910769772 +940820820 +2560570895 +3910090320 +3623962110 +3613209578 +1984577040 +3839698498 +4291415068 +3920501627 +3470610805 +4032164931 +3201862672 +1483461066 +176659047 +3010079203 +2555468952 +1218999376 +3330587498 +309657603 +3638838650 +3401568755 +848012465 +774090675 +1045899883 +1461030618 +2348606048 +529730778 +1236241404 +1797847896 +4146103457 +1431946685 +2556824860 +1058341341 +2202127821 +1456835772 +1335660517 +3072544357 +3917328307 +2955286133 +3742546235 +285688547 +2861428448 +2425851499 +370018725 +2410376695 +2208880404 +555349698 +3911560864 +2853831037 +1279445855 +1941400745 +2142539270 +194703444 +797201822 +3718076661 +888902231 +180699259 +3180298393 +3962117197 +1560236065 +2324469006 +2723835026 +3659781920 +2149420135 +2409320416 +1838705408 +3116816148 +804153895 +1713574529 +2684516234 +1317344600 +3251549611 +989756729 +864375942 +2757272019 +3137505079 +2273975976 +1464914920 +380871577 +340764534 +3582757989 +3533622506 +3455238416 +4055948875 +1936467037 +1747175902 +4172400362 +4035100674 +418937003 +489320970 +453010941 +908324772 +3790894005 +1622136653 +98923565 +225476375 +328674494 +1303157820 +384782747 +594740538 +3650273854 +4140532948 +729628463 +2748012932 +1270253811 +2353729070 +2395937348 +4001559636 +448615905 +3635210726 +3958553206 +4227091924 +2407655517 +224262368 +276925782 +1756086592 +362248498 +583376823 +2836926049 +3846316042 +2380309152 +4141072858 +3257431256 +301472744 +1328060313 +377552102 +633578405 +416740329 +4220899113 +178826076 +42497966 +3025541289 +700938254 +1354947828 +3435206902 +1090922552 +1687900010 +2199740381 +4046379776 +3998361077 +3183682228 +2863834890 +1210653626 +2755457745 +584292605 +3495345282 +1102924683 +3771730445 +1280514316 +2015608928 +1055344680 +461421105 +1874424649 +3836579915 +720314190 +3347582038 +3434949967 +2420866831 +644242352 +958205693 +3081965968 +4056670215 +3507477623 +3660767791 +3737394169 +2027567639 +4044292338 +2017082455 +518111801 +2149894533 +721457718 +3505367478 +3140642430 +1724912333 +4071004153 +1015738451 +1404212625 +297174014 +850608788 +3995850056 +1183481161 +1389224044 +3953687991 +1307089638 +3796055765 +3597564806 +1917214209 +3112771295 +603762316 +1984062838 +741376702 +3276704829 +1210906803 +1253663407 +389480280 +52269076 +2284026739 +599186639 +777744404 +3398954426 +2231625943 +4190207940 +1287527006 +2370369310 +1294018707 +1658751819 +3260611362 +426445514 +1976210172 +649270056 +2566845441 +4262240376 +1681327132 +3621920702 +3209274723 +4026603773 +2011458926 +4096227743 +2722214721 +1144105551 +1470617364 +4241718783 +1023388957 +1444557984 +1201625614 +2888908462 +2225479223 +847797876 +3708216663 +1829763805 +2350305580 +1176941516 +1417554016 +2519394645 +1898636095 +499926535 +3516350991 +1569652670 +4174053147 +266132722 +3941150539 +1496867503 +2301629301 +420280106 +176409005 +605524806 +1883990184 +3037831247 +1137799554 +1947247021 +3078732969 +185282491 +427761081 +1361595517 +168577291 +1356525643 +1545261487 +1583298477 +1842813739 +2888963550 +4058898059 +3819024462 +2244319543 +3102969422 +490515825 +2677775453 +3423771991 +3764921256 +1874735126 +832895298 +1641221321 +2636299079 +203221600 +4255516732 +4133270592 +2432239555 +334133759 +2226317410 +2729182672 +1080071282 +3271315188 +1672580641 +3291444464 +692008487 +3943496381 +3552939866 +436575526 +3393352892 +3078573259 +1572026462 +1967604694 +240311375 +37244620 +4117966463 +3584183487 +4262911202 +3779201508 +1155743314 +1453434517 +3485641312 +1315784753 +3988230615 +2756037550 +1127593010 +2421633085 +2712588091 +2824160907 +1952948745 +1550738140 +587469429 +3840859020 +3176430678 +701252302 +11866956 +2249671163 +1754557233 +772001310 +2968004708 +323229491 +3618565998 +4047613988 +3486853989 +822630613 +199082578 +1592306065 +2507872335 +2215106410 +2039092256 +3900102446 +247879638 +3939720287 +2502008207 +2301400961 +2804576590 +2243355916 +4158458042 +553972395 +492225845 +857887284 +4212197328 +233877059 +3270560763 +907438323 +387241209 +4008155967 +3147490536 +1745423154 +405147843 +2472376645 +634920382 +1759840059 +3672657988 +506159183 +3904328626 +4087589846 +4023974207 +1158499857 +178259628 +2859638196 +1946681420 +2312776751 +335614964 +3864291905 +3645071300 +568240972 +526285467 +1520707488 +3282503029 +3315089120 +1396581324 +2655022584 +957954675 +3225541744 +2269497644 +971808475 +1344218940 +3322654341 +3968582229 +3527482179 +2879612821 +38473860 +1206226939 +1117535122 +2552522100 +3218517076 +2964782638 +2647653918 +2740874259 +1780016303 +1919183353 +1720677746 +635770255 +1573241797 +2144808363 +1887340545 +2601865514 +1492497181 +3211485444 +1581460326 +3517808846 +2465040167 +2380703168 +2204656389 +2622021602 +871562229 +3513404067 +2625775055 +446309903 +2570212568 +1606310693 +1686510910 +2204791455 +3244751838 +1424388831 +1347831390 +3936294291 +1120005866 +2300311933 +2068642415 +870112050 +3695505910 +1239007391 +1119179517 +2507289252 +2898706651 +2617617599 +1720277109 +382595135 +3495891420 +1256842226 +350229899 +3591720738 +38886279 +3915351102 +3267217196 +2588417954 +1721632372 +2360961677 +1105463090 +4242446297 +1660809967 +2700576092 +722101632 +2821607544 +4104120719 +2502829559 +271977991 +128614166 +1212880890 +2814277272 +709839862 +872193917 +794329793 +3875418129 +1088199498 +3827179127 +2094916154 +988590585 +2850264270 +3925639002 +614013576 +913358324 +2404411196 +1887512180 +916908403 +3256581227 +3851150900 +4122778367 +4213220488 +2315734458 +3646984201 +2804394628 +1442877318 +590852069 +3507161388 +3234058180 +1236794803 +1609379802 +538771611 +3858430150 +2308963548 +3329229202 +320069439 +2016721411 +732150922 +2072214170 +134004903 +1159097953 +2824193973 +1906196488 +1506412485 +4097819257 +1519556863 +3435650403 +2999217134 +2661930526 +3832983792 +3044119929 +1470574538 +1744043032 +4177692476 +1381650873 +1807987246 +4148963932 +457799408 +706877156 +1329737420 +4202318612 +1733904323 +445176095 +739561164 +457340827 +1080368398 +2849962997 +3806303034 +263160748 +1945967909 +3672768415 +3153377618 +3635092018 +2140098904 +1443903317 +149642899 +1937984608 +3362782408 +2026790462 +1405021941 +3147525369 +821954250 +1269646023 +856447262 +3879173315 +1727876481 +4062280429 +1192646833 +781517487 +1466689859 +539933978 +1517137289 +1191802924 +107492984 +1723216885 +2883176931 +2573697331 +3925298098 +1430843787 +3738204221 +681348166 +2638158578 +3252681586 +638178227 +921196863 +2483588445 +1331769470 +3961587721 +2285740225 +1245882791 +2308460353 +3119224910 +69109225 +2896572891 +3875210935 +3645735001 +3630785398 +162869517 +881610715 +1928663624 +3713591717 +1368534337 +1582518311 +1126146737 +1888370073 +3483957932 +2975912060 +746797387 +4164480449 +3159432211 +2053705509 +3516913649 +1895615198 +894221843 +1218868255 +400320756 +4234121007 +1687200245 +2157330103 +1215440843 +4184184177 +3393796898 +2925005719 +208274935 +2252261581 +1967475380 +2703150174 +1660061091 +3909459119 +3563550815 +916445852 +741517855 +3783005762 +3716399424 +2223577682 +4258900016 +1694723961 +1402131857 +3005693351 +2016249001 +1131181263 +3854333876 +7077734 +5847280 +3086526947 +406170693 +889375850 +594952260 +3460488707 +2327657136 +2295472094 +501399083 +2446727009 +3133642718 +2381357129 +4221655935 +3240337393 +575627325 +4232524212 +4267791960 +3738236363 +1870813190 +3639156503 +2523870390 +2107171427 +3974607378 +2238664216 +1818604774 +1856045396 +3402342162 +3595801336 +1790598130 +2143442909 +3846572672 +4027028175 +2855956255 +3185403224 +2767638317 +1039580908 +1135740376 +861889973 +669823471 +767570404 +1101961049 +141434794 +3099578956 +1723516519 +2368513168 +2552309946 +4026158427 +2568131585 +341922603 +3712034904 +2094980403 +3309129827 +1065342906 +502844043 +566089124 +800814213 +1021980669 +3320332848 +1502708270 +3756860474 +3628612472 +1596894807 +3407075215 +572328855 +726211680 +2358795183 +1104084721 +2975116611 +3028744354 +408468629 +3940417479 +240386991 +1473387913 +1876717813 +2312433057 +3364313428 +1872893510 +3028086117 +3729021814 +2741805787 +3890198697 +2546778708 +345773820 +161863450 +3127913169 +3184038458 +3957433687 +4012024471 +3252572860 +665513752 +529877469 +3409767390 +2728799899 +151727078 +606293663 +20638385 +1802385166 +1338178979 +3972306353 +3275036221 +4286478087 +2525309462 +2554203238 +390942472 +2091322883 +1908850845 +2232370001 +168151102 +123602519 +1244000402 +3594587334 +2205591364 +667389038 +856068598 +2756638949 +3271735932 +1211765998 +2761707666 +4284490592 +1564816496 +1291686545 +194092553 +975244491 +148358119 +2070448527 +3572957560 +281501616 +2677261459 +3347079326 +3791674095 +2515435332 +417346662 +405140899 +2255162102 +3795260492 +4046794230 +3676514228 +3634409759 +4244931120 +1914648691 +3532234327 +1584414504 +4013132630 +2228469018 +548521821 +1826327833 +4170156901 +3499020159 +3176718381 +1152077205 +2753999817 +1241808503 +1043062718 +3412301032 +1666120905 +2397348667 +356468913 +1068178803 +627937632 +2479687690 +1770562486 +542616567 +2229828553 +146174121 +2225569970 +2072141375 +90987341 +4059535405 +3749562615 +60324743 +4203291870 +388856864 +2568739838 +149459694 +2494263670 +2699399660 +3435499703 +4041215295 +4292299825 +2385897053 +1920180933 +28149376 +3287247365 +1519310450 +1904374721 +3951280029 +682424170 +3534161098 +2952516516 +3109794988 +2542036671 +4176719274 +452869063 +858953041 +955344586 +115578828 +3812602648 +3514529474 +2747490452 +4021558453 +2139153852 +2642077300 +957258547 +186283242 +3290249608 +3150694260 +3835612752 +1116520777 +503309689 +3153101153 +3270699925 +896142778 +3733292855 +1761956614 +549983931 +3901486111 +4153456310 +2144471157 +934420279 +2100454623 +420674173 +2986749450 +3469289126 +1865152472 +1684606086 +2631455567 +2080572882 +254249635 +92601696 +1463198021 +1825030026 +4025785056 +4028675264 +604399744 +918328080 +1727267311 +1649569114 +2426824898 +2710659474 +3359814378 +2524300172 +78430955 +3956467348 +1600855037 +3976618332 +2089940395 +3983361488 +1114058438 +1609030269 +2323982539 +478872977 +3774651439 +2578197805 +225708691 +2346637994 +2811023056 +3057142456 +2589007460 +3781965796 +89788623 +3307155192 +1871656856 +3152388292 +3867320812 +226846624 +2734067284 +3621672899 +1082021319 +2004922534 +2059637059 +2234611363 +423252642 +546361671 +3415315131 +2763071979 +4025441516 +3662047628 +4145635531 +3918476436 +999509301 +2100524810 +378900004 +1287335525 +2942001149 +683817556 +1307790932 +4266519925 +3396383326 +108317562 +2546760800 +3200627339 +309763635 +1754471132 +4120750102 +3782062717 +4034341763 +721548101 +901444457 +4259204867 +2556211438 +2100359078 +2875466488 +2851140660 +386666046 +3317751570 +2863343196 +3705494544 +2692210538 +678886920 +4246971047 +1714797999 +1207121890 +2706893775 +427840315 +2555259241 +183698627 +3128772418 +1805998546 +2452895769 +2146998186 +86025168 +2346279194 +993209125 +4041147895 +315737890 +2134331108 +745210875 +867262502 +2908436441 +312402270 +1007478312 +2990671982 +3491044913 +2239510790 +4049390122 +3673548367 +3279563532 +2768281951 +2463292068 +4229684218 +3342073929 +1685297601 +2403555708 +3051350908 +4060257931 +33194106 +1195529176 +2049293439 +1342972509 +2015059793 +3476838592 +2087459866 +2367932252 +3474371226 +72021981 +4289909320 +2690928804 +3974047601 +3865442079 +2016544321 +3560345325 +1774514047 +3357960033 +3916073239 +3035166711 +2037423953 +4237279717 +2748061640 +484515724 +1342720485 +2378566233 +3807599683 +2243451499 +3545325339 +426675042 +1809539197 +3535139314 +617675193 +1640621461 +3281528548 +559038305 +884721473 +2289868597 +1914893614 +3307756037 +1102206250 +2191445861 +1537145930 +3250246952 +3895064368 +2979742746 +2250041059 +2498873339 +3190428361 +2946401893 +553677603 +591574264 +1441262024 +3291763448 +532619858 +1268504293 +1316714984 +2403696195 +3037219567 +4229173563 +509282032 +2054231022 +77275089 +4204014228 +3678585025 +777830804 +1987996996 +3310066327 +641992467 +1800094106 +2180651445 +1062840855 +3041747834 +2528268695 +1150176206 +306591742 +3458704296 +2602378803 +1171366575 +3251335327 +3839451985 +500029310 +2855336761 +135185478 +411725303 +3205231626 +1460051889 +356767054 +2578570277 +550163628 +2719552209 +2677611998 +846545480 +992454776 +2345410147 +4179915254 +4234492268 +387558786 +730481803 +3236452971 +1363011226 +1246601190 +973497720 +562374061 +441270933 +2253700654 +3585847274 +1491050212 +1675012056 +2050889729 +2528511797 +2644501022 +3150383086 +420009078 +879515504 +2303014148 +2450173662 +857542755 +3724180002 +2535467150 +1750462074 +2531490987 +2276403902 +2695459659 +952204871 +3766323811 +1142218700 +2092204553 +4123808263 +2176919164 +948089917 +1834839456 +1510104036 +3238305522 +896122153 +611404335 +2163977519 +2945592278 +1807551167 +1299758020 +926007414 +2175140362 +1269440641 +1280662735 +3656150543 +2294870211 +3431525572 +597287452 +2356412774 +260331108 +4204129542 +3783251029 +201081009 +797446510 +511253550 +2737126294 +445974320 +1256169040 +3596963176 +405827342 +3138609414 +2032939127 +2384473083 +3136790846 +2568382242 +3132381458 +1167535889 +2319093144 +1513834633 +1877788064 +1038010856 +1406447106 +4161959 +3671116958 +2885694978 +4086160180 +2024545470 +1399480754 +1465166480 +3686741263 +1723159146 +4062493664 +3878547450 +121982780 +2088553922 +4268516741 +3302025148 +4144118925 +2737966153 +2508717821 +660001806 +3845757503 +2164690141 +1134002582 +4009568627 +2484830852 +2379482856 +2258525215 +1620466858 +1496439447 +2211467187 +209910583 +247898406 +726850246 +688571914 +4266020634 +451677928 +2922367159 +3499437554 +4196409235 +3757069227 +1465432865 +4028116998 +4212747565 +759703787 +3253634397 +2409919874 +1749570366 +4270565210 +1687793560 +2281484821 +2862248965 +3576974452 +2292629964 +1458543914 +3584898861 +1248349247 +771435253 +4201999379 +2606470303 +1313320020 +1201291814 +4099111906 +1991687429 +1573354724 +991215698 +1014109010 +3221065101 +1762430284 +2109593356 +1866705358 +72861049 +620196996 +1435140717 +2043740206 +431386733 +3041760130 +4036159511 +521803281 +3994622077 +3882389428 +2659306625 +1482685235 +1189402 +2540122279 +1116528219 +3381094507 +362412149 +1142979764 +3217811862 +2147340857 +297747773 +1545168876 +3678662084 +1046627836 +4204753880 +2602043361 +3536932032 +1699374549 +55385156 +662866657 +907805548 +2762852636 +2095827961 +4119987853 +1355137370 +926473528 +3729367211 +2366948054 +1109582923 +3049206138 +3508838901 +3501165886 +958265153 +1214827251 +3078552523 +2973193248 +2771110470 +1192407278 +2138312073 +3962996502 +4195932890 +5439643 +2495088740 +2957618610 +3220550509 +681163341 +3359251742 +2473120238 +3159492559 +959932144 +682481970 +1806804743 +2364168200 +2597491549 +1988732049 +1563534535 +318938570 +877435420 +2351281342 +1248507739 +2249265763 +1151679370 +2973005979 +295439239 +373717003 +3140707223 +951831206 +4014254169 +216459731 +2660644265 +330718453 +646992436 +3408597605 +599352133 +898653976 +1498181993 +962171798 +3184372907 +2982638582 +3789626776 +2763294492 +1862820645 +2553767405 +3226653788 +2631518637 +921276484 +3386258730 +3589420277 +373353503 +4097972833 +3813196543 +2850080054 +1923502931 +3702943376 +4265135004 +765801142 +1339664406 +456441304 +3320856607 +1951371717 +2823342525 +2689991675 +620051303 +2083214990 +2859671854 +656284556 +3349862349 +3964045686 +2450565721 +2016234637 +1721345607 +918861584 +2532803014 +3636848207 +644712268 +2453169701 +1489700679 +2109061272 +1225596209 +3037329004 +3409361961 +226099737 +3444940404 +308894870 +393465030 +4179812444 +1740698365 +3086571919 +1243848113 +378558194 +1609262479 +3088819839 +1951618360 +2796084376 +941846498 +2541472962 +2519797502 +3662412283 +2632432798 +1166830612 +3703757491 +1179467539 +110656262 +4119542729 +1767673905 +2232343764 +3797824193 +3911460446 +2789382493 +3938741462 +3638840366 +786036134 +161512192 +2948317796 +123424717 +2589365169 +2320642623 +4047180600 +4010090805 +4037330552 +3134021948 +3706694344 +3127223557 +474748048 +541884947 +1577276193 +1688711162 +2568961685 +2984858821 +2922127315 +3256480510 +257046353 +3822368874 +3103392606 +3550209118 +3090547349 +3256479559 +1061317890 +3540580649 +1367102482 +3552266637 +1882811379 +341630588 +3678037527 +1954384655 +856043756 +1097198020 +118819797 +3933610952 +1949779810 +1280382506 +319976802 +2577575936 +3492108653 +4083768867 +31606466 +782682622 +2418839467 +1592377835 +264553872 +955944151 +3978381108 +3163621218 +2944232570 +2407686398 +2115787890 +1551377942 +734693081 +3496072400 +3949580127 +632085989 +3112561712 +3250934900 +4166169764 +1519407178 +3612581215 +2562358783 +1402035366 +982630424 +254244593 +1374251218 +2750225731 +2194022467 +690077264 +165119564 +4266956628 +2606501793 +1373028083 +792723091 +624014591 +1872798626 +3150864942 +2027934086 +128064174 +2245609009 +3287639232 +1348220311 +1522532234 +1232212248 +1267535540 +870410267 +2754828457 +3868001639 +1359225388 +235834622 +3752380436 +3730820595 +3956321637 +2413383331 +4278865555 +2693818714 +489120362 +3124314246 +1706899380 +903820173 +3350702762 +1875862285 +441271345 +2037175859 +2205116082 +2346724288 +3547595075 +1666749092 +289795114 +4129883540 +3579430864 +29035871 +4017433578 +2534323836 +1301607112 +2553608477 +1024769368 +3258714897 +4279853836 +1143744627 +778700911 +3103974620 +242130611 +1054051654 +218669262 +130458069 +2065079855 +2655680099 +3269685977 +4247417423 +2286803342 +4175703827 +2060878972 +1179429852 +372960755 +2892358588 +705458823 +2171708995 +2500101358 +253759673 +4196074137 +1538126192 +1065988861 +984112488 +4176508216 +1439346002 +4241446131 +2035378124 +2781294508 +1244638381 +1119800294 +2000611569 +411494096 +2139635949 +3189582524 +119237527 +3698283775 +913539962 +751752899 +2634669595 +1844328427 +3237420508 +3426778924 +1778209209 +3940430748 +3511330966 +3955128263 +1175085250 +3398458466 +3188998534 +438926441 +234672391 +1095674839 +2739944851 +2377416606 +2203926056 +2116284214 +3889023991 +1429169640 +1194422132 +3848573117 +2417941758 +1992781211 +1133581935 +1094863294 +1915572451 +1496199161 +3005186553 +2594348194 +3143068804 +397657701 +3459885218 +2431423177 +1992828114 +107945219 +3044752819 +2680981907 +1619733317 +3846770186 +1745415768 +41714002 +3717851893 +2299631868 +1757086337 +52170961 +3696092374 +1481741266 +1792303845 +2057974876 +858436693 +2153457784 +1211914414 +4149114693 +3722871629 +1836981472 +3370384225 +714795175 +2530742250 +2731947729 +985648055 +67624256 +964071052 +4074592602 +2679488695 +1350144513 +1760137138 +1832336365 +3305760173 +3034743795 +578191652 +2847086707 +70540527 +295779447 +1147491937 +396489819 +480166835 +3716204796 +1028616602 +692114190 +2878280532 +1783209659 +1556478756 +390721761 +1605360516 +2955730123 +30211890 +1406875184 +3598422149 +1448860351 +558041524 +1529362113 +182946665 +4032068088 +2886667615 +3069280484 +1530731474 +3346839427 +1262916674 +1768471332 +2202611923 +665040907 +277337212 +83935353 +922901639 +2066724908 +971513023 +1668832373 +1488114314 +1899080360 +1343491104 +2200280864 +1459027177 +3472275099 +1255081745 +3453711947 +1797651137 +403274812 +1643142403 +692051937 +781034171 +3400254053 +3883920638 +1901755708 +527360390 +2604771251 +1811041081 +3546210130 +4285821214 +2878344853 +1713691847 +2051310669 +1979266046 +57992494 +2151985011 +2253702322 +78155996 +1004652397 +1541714781 +3083451593 +2670677203 +608822244 +1351633739 +2420513310 +2736265900 +1801021106 +2348945429 +792250343 +1930437931 +2523254891 +3335236623 +2592817313 +3646190218 +1799971804 +1765785792 +3495323301 +2014391980 +1477054215 +523641202 +2604457068 +323137 +4010586332 +1883238503 +1306890274 +344811677 +4086535934 +4141350784 +683270961 +3416494913 +3412487448 +387631006 +2946219625 +2715958161 +3043179312 +1221919990 +3416304797 +1905310756 +236883391 +2731459497 +3236627632 +813223969 +258234301 +2419008830 +1967299525 +794728221 +282368905 +3200661183 +2794657111 +4171254586 +4036967666 +2004939968 +1471389873 +1331225759 +3301227279 +338781159 +1821180854 +89325628 +2252573329 +4278981703 +3466410039 +1455671479 +1948417091 +2408448734 +172308248 +3802149380 +3979082782 +3691302740 +1045888782 +1290034426 +1359860715 +3079544862 +2545797091 +1202302394 +4144405727 +1355831442 +4041044335 +2016880951 +1800930442 +3907307102 +713912938 +4077377901 +2662922727 +1696071256 +2052537106 +1782184515 +1811517214 +2006552870 +1412811154 +1332178897 +2465354660 +4182846404 +3577600842 +3487867834 +4254225344 +3344704529 +801877981 +3427642966 +1180941835 +919755422 +1568166625 +2820807511 +1399553257 +1987436950 +3374548908 +4182834142 +442583266 +567345662 +2779443848 +716482501 +41856767 +1227612340 +4146208664 +1427180090 +422846504 +2879825793 +378431145 +2718729170 +1696702270 +4056138460 +2852228416 +3351910268 +3725151358 +2828295830 +2878682075 +3808482472 +2856497367 +3322890499 +1947535730 +2318866963 +693728138 +2353862687 +3749463313 +317036810 +1792152197 +240563341 +1185900597 +2357204700 +1439474022 +4161329408 +320433614 +3768942653 +1322008913 +2534006098 +3081574020 +2790453157 +3219311160 +4069912951 +2072917214 +3727299051 +25814111 +499342025 +20003871 +869214097 +4076681871 +2107538046 +431484641 +867757662 +2460134438 +3407994121 +1435174446 +1817103457 +2377321188 +2429960381 +3605327920 +3850250820 +2878508508 +3703282267 +3992371769 +3336081648 +2084223273 +2720172627 +2570305990 +3161946132 +2678530403 +2874169023 +304007736 +1233286837 +2961913662 +2073023224 +3500987172 +4019586854 +3181422555 +211375265 +175236713 +427362417 +692449001 +3695012311 +2795328937 +3452705482 +2363728365 +1284563213 +1801317995 +3750439120 +2586829324 +2277437707 +3639071408 +2678032816 +3988686677 +252114874 +867685462 +4023342911 +3534465538 +4132652200 +2877589572 +2834552776 +631092364 +3930087549 +3724605443 +1708213859 +687432959 +2859258680 +2161508343 +4095351728 +680474819 +1212334904 +4238605265 +3543698767 +3749108938 +1710742918 +553613995 +4231319329 +2561065214 +1799753800 +3911565515 +2265139510 +4244021632 +3459305935 +328337474 +2105517069 +1399647381 +662333159 +1218767073 +2062647228 +1606204140 +2248433334 +2224731129 +3283156484 +3888961044 +3006381555 +2697412105 +4026072538 +241883824 +3725821278 +2806246680 +2182832240 +3605357100 +1096474973 +4042086008 +83010282 +2752929783 +224643096 +504841957 +586183778 +1433982257 +3393644567 +3371612406 +2368632788 +1242000200 +2584375808 +3809549957 +3386652868 +756259349 +218487586 +2991613938 +474828700 +3089069464 +2978639659 +2623763201 +2170216283 +929331292 +3350277431 +900615699 +2673125013 +3424505860 +2976719215 +106124885 +1887696455 +1856990498 +3396630401 +2425817372 +1227130920 +3269046080 +1020904026 +2354715723 +3564304401 +416375471 +2563473206 +2454781160 +3398619317 +234820736 +2148887939 +4023272748 +1318266834 +1939107317 +2988691921 +3629141174 +225782880 +3216822492 +3056883752 +620224059 +1549389340 +414870049 +671508058 +3088171557 +277875777 +799305044 +323523465 +1695266456 +103712210 +763405930 +2562909577 +2335970682 +4169895428 +67442564 +2914741802 +3515476582 +786610849 +259187555 +909034171 +3278364109 +2433713251 +2886209162 +953772732 +1844827866 +1189872879 +1095645041 +1750226114 +3569499400 +1271932560 +2641334331 +1560177282 +3727133640 +3017818919 +2967804318 +3539164083 +964175838 +2990925303 +3723450060 +1818845132 +2626917863 +2974217419 +1529940826 +2249977789 +926077209 +90911606 +2470147659 +1082076382 +398543989 +1758234358 +2412287176 +4250322250 +2132070530 +1592993014 +746555599 +4055388280 +1615507504 +249364164 +4022358697 +496646919 +2043300246 +3764330461 +841304419 +1266255470 +427075775 +1837719172 +1909269568 +3946117927 +2241006844 +3709648167 +4022504909 +2593008142 +1834414272 +1234888624 +1725362156 +1586259300 +1208345849 +3554430893 +2709863157 +675318141 +3589243395 +331527344 +141130977 +3610777702 +3556621577 +1308850524 +3663997276 +3977178075 +305594055 +690441540 +1391335405 +2368657463 +4169404768 +2830221309 +1109804008 +3948367528 +140801325 +2979642662 +7761692 +2938734491 +1303025273 +2078491528 +55742608 +516366463 +357154011 +1729344822 +261722291 +563472591 +3369130599 +1943714454 +3113791357 +2110371751 +2307028835 +3479121643 +1332640541 +970936332 +4070941673 +1747815037 +4246482394 +1747563713 +1815615665 +3367560812 +900036867 +3279978442 +580753775 +2051329400 +3280101710 +3566042215 +2336016884 +2373679254 +1488756864 +1110392664 +2401780132 +938132304 +2812986572 +30080882 +421717888 +1456840436 +1367123629 +1646900050 +4251880598 +2630020374 +3128249 +922982653 +2944739433 +3021094891 +1458959116 +1480158447 +3066874179 +2632300626 +2696062298 +3538311063 +3152127082 +1260015635 +3597232126 +3137199089 +1343057014 +1600622289 +1506217442 +2719457677 +2129456124 +378824159 +3423378018 +3059231429 +186750228 +3325366154 +3297780353 +1793464317 +454407786 +3650332401 +3621175267 +2400234614 +3588649376 +3932001467 +1336692558 +3918601607 +2335875489 +2540962726 +2883282784 +3581176739 +507961776 +4080283905 +3277287680 +2781055775 +558013340 +1946888484 +282753918 +1030511234 +3070135762 +3321173203 +770608570 +537624271 +1318342296 +3575766596 +2983465264 +1395684072 +2706549491 +3017445744 +1601347941 +2528862126 +2665852553 +2812627336 +1049155766 +2340800605 +2880860944 +1517428275 +664483888 +370953555 +2268578781 +3826516680 +820811545 +51005231 +1880721202 +3586818877 +1114670876 +3011417590 +4232279860 +1356828871 +1915678175 +733441022 +3995691152 +430266930 +2233261518 +2156044704 +605018827 +2296998010 +1204938010 +3638438568 +138163965 +1455709391 +3987803780 +1028069570 +3829934637 +953453051 +3740943160 +197000233 +1900099086 +43588663 +695262706 +885615586 +2901903443 +4216394442 +3783141790 +2815169283 +4019385406 +573231158 +3235225450 +677666465 +1283298913 +638941181 +1037867934 +2531381719 +1302857375 +2752936575 +1302108949 +301445558 +3644966616 +454660025 +3014390427 +1573663649 +2841194296 +3958418457 +780914107 +3036470151 +4219771431 +591365930 +3979113824 +2763534942 +3953187864 +1716341884 +2825128163 +123928135 +9181152 +1158402982 +3964165054 +353917564 +4181256959 +2188297691 +2066297340 +970963234 +1231417244 +3562052400 +304064304 +2054717532 +1827271528 +7883984 +1502092505 +739240073 +2363842218 +701065050 +193607692 +2287655641 +2351997688 +110044376 +3305414422 +750412112 +3611472440 +2968469318 +1380448861 +1521148690 +1297793195 +2494422972 +2689346794 +2489414514 +3739248030 +1624390851 +1336760407 +832143244 +2131462043 +528807962 +2292263121 +2726733253 +4124136686 +2083254300 +3197657673 +1172352192 +845443122 +445302699 +616184919 +2027911630 +997140638 +657613087 +1071725742 +2458859196 +395322268 +3351073356 +3652194357 +908439613 +4048158959 +2062369928 +1502907208 +3430054170 +1703115371 +3937256854 +453693056 +2700905397 +1347328655 +1695311325 +1640740847 +1287135030 +1295650667 +3692047503 +3187820605 +1289859172 +3131345006 +549291001 +4257836680 +4142627753 +105612644 +3016265830 +1902896377 +859304470 +2594945395 +1198151228 +436317110 +506770506 +2965709434 +4105456519 +4154745881 +1181728580 +3873130093 +1608073117 +3431912062 +718128194 +1020009104 +1761433479 +3332599351 +2620645114 +2723296145 +3005676333 +1152711827 +3527089144 +484959914 +4252580530 +1828152152 +2166092855 +3284088484 +3471278477 +893785288 +872129367 +3038583232 +2582264090 +4027310661 +561339471 +2173967856 +1040828273 +2845914233 +403137598 +4090144615 +1388467412 +3082180576 +2841667530 +2782746972 +810817879 +1156224669 +2198404343 +1316460719 +2260800862 +2520200703 +2664605006 +2063138787 +2238428411 +3386685751 +2645027114 +1540501579 +2482561431 +1066116916 +307217525 +2047441593 +3251541545 +183315845 +2844733484 +1762241112 +1472917006 +861857698 +3246796060 +2652761074 +2980365418 +1961961680 +560164937 +1040149334 +2766844646 +4057750129 +1135400093 +3455521951 +1748414588 +983726190 +2630462408 +333827442 +3902329960 +2707731699 +4110392671 +314174400 +1080950066 +3465427593 +3106779251 +4173382496 +693696080 +1683763826 +2472120283 +341337930 +3593632105 +1055918453 +986576425 +276977582 +3626230611 +581422136 +2018231298 +2163553511 +4205112015 +2487570033 +3878139168 +842539613 +1970068750 +1211645640 +2012543206 +4263817275 +1179505949 +1161237767 +3492264446 +3345842983 +3934789695 +2405479983 +351401614 +2205597053 +3920000011 +2593019856 +3594631415 +691649502 +3843641764 +2453396851 +2174940811 +1399210500 +238143438 +897569779 +2220889421 +1337567466 +1657216766 +3759667365 +3331740950 +2529544497 +827882101 +293449682 +191325072 +972426541 +335394877 +1477559226 +410091328 +1455208935 +2818091707 +1398303780 +767473152 +922444732 +3288726164 +362045761 +2837145602 +1311637592 +900041271 +3423311982 +3309628061 +3455376223 +2567912211 +3333781680 +1582658045 +775825876 +3431349816 +2132734209 +2570291967 +2454165790 +3051809806 +3459500095 +67411622 +302719711 +2642680595 +2279541191 +4118529431 +1924061271 +2939379071 +3667528970 +4172934211 +92798021 +1084243601 +574257454 +1813202874 +1932468857 +873624798 +2276267240 +1633988500 +1236859159 +2556100434 +778337761 +632982952 +1919107960 +4166542196 +2689865632 +1415489177 +1108678956 +1028669987 +3584917518 +414929632 +669492832 +1152726710 +3994457268 +3027820399 +2977574425 +1362479460 +837578921 +316938822 +1837042472 +2822952643 +2378054297 +2200622382 +1737832257 +1771340417 +905699819 +1610894190 +904637276 +4169754213 +3385330396 +3369818192 +3185651513 +3703025582 +4065265801 +1883952240 +4180685826 +3838527494 +796747387 +1542946817 +3466188529 +2844358261 +721052692 +2801817350 +3318311978 +766188451 +651215122 +1753953217 +3150652846 +4100945971 +4286458946 +74970595 +1745984224 +188817829 +3221973878 +3176907897 +2838398039 +1622398181 +428797025 +2367047834 +2202804853 +2404768872 +809240834 +2215127814 +2251263306 +2502802488 +1494016874 +1128516970 +3788763498 +1520852000 +1233186702 +3024750480 +1635980563 +2728576756 +3540353807 +3540217166 +2773403560 +1868343827 +908522890 +1664990781 +2878938181 +1789904830 +2723501270 +3234437101 +4045307669 +2072699726 +2521195940 +3222507411 +3790648231 +676793109 +3122398200 +35787526 +2860826438 +1069905408 +2446865541 +2966200719 +3829438327 +4080938335 +549390983 +3014192521 +1931038170 +620676571 +609249816 +2399486442 +2599902952 +1413788090 +466289414 +553129789 +89735613 +3343124412 +3259265973 +4014222677 +2728335251 +3678792314 +3096587264 +1763748462 +1184194936 +4218267981 +4144802834 +3670004670 +2175236016 +4086967031 +295256444 +378361042 +4097896420 +235295838 +3303759582 +2014782901 +3436191173 +3467768688 +1807272007 +4143977645 +3850205659 +1246791068 +2481443365 +2346080191 +2336624075 +2475831549 +1989350290 +1851967548 +1695699931 +4215849345 +2311897503 +3985054597 +3636070219 +608255193 +613704945 +705981514 +2347842526 +312825162 +3843581947 +4109141528 +54581123 +3901175129 +1641174372 +785554524 +950021112 +2707154000 +659416927 +85429981 +2348060801 +544091759 +107996671 +1993180566 +2369815531 +2779720269 +2738299430 +2403813091 +1723139523 +360377902 +3224831272 +2762756607 +1161858595 +4162818422 +237592 +2378237753 +1140544106 +229877794 +2715146206 +1295227553 +1903407095 +2683379927 +4008433336 +957783704 +3395695829 +895866231 +2616836137 +4041269688 +2007586236 +1498065483 +1754412637 +1370271974 +3910508489 +833913852 +4133748021 +2120487437 +3464854065 +2830461428 +1225439969 +1470774164 +3714842617 +3903055176 +3278245953 +1696108730 +322389968 +3969444481 +2419553136 +2878627958 +4182244380 +3876554035 +2625710922 +2486770006 +2740172339 +679569617 +2229215919 +3611976852 +2630461096 +1999110897 +2717857906 +1016053512 +1567730734 +3536813050 +3140743524 +2295724841 +1826092651 +2388417553 +1576793383 +1950829218 +1566641013 +3202259846 +695778630 +3116540768 +2102769811 +2810940169 +377975296 +1884762138 +3002324177 +213858653 +3210116529 +542891836 +3140897926 +3765074081 +1072381535 +2800075698 +1634306415 +3344068332 +607269374 +2987365348 +2607595245 +2844954257 +1946876391 +2892975772 +1684976329 +3154063346 +1026568784 +3546710121 +3407175226 +1224007095 +326584600 +4256913704 +2121943453 +1652913365 +4126368140 +2719989579 +3249824895 +309718058 +3803068656 +2647600424 +2992736485 +1959670234 +4037105652 +3253381848 +2388736701 +2717134283 +2567888063 +781740169 +1470723724 +3062898257 +3615150912 +745764116 +2975230353 +983148424 +866436452 +1019804037 +1602977367 +3592409597 +3482914048 +589068480 +4141106509 +696839308 +309757675 +519138855 +2709435127 +778195884 +3628687438 +2698873875 +1229425987 +3565573557 +3986588919 +2680433399 +2237423209 +2127088705 +3641489017 +3040888291 +2765197897 +671245056 +2084969471 +3889930595 +654361927 +862074371 +3316282649 +829554617 +3522385154 +2993485081 +3050949125 +618739808 +98616949 +2830607303 +1960889427 +2489675056 +3859112914 +625477676 +1771295787 +1183776438 +545803262 +1267518398 +2482983780 +1244458038 +1027399129 +947585038 +1523817352 +3994734919 +3609371797 +1688175707 +3445967648 +2140386786 +2712121806 +2074521779 +2644897215 +3203625637 +2713955306 +2346767594 +3093764709 +990972113 +2003786748 +2300638850 +2017460657 +3007808149 +1022487576 +569382904 +650511328 +501733511 +4268737748 +140840943 +338298749 +2370870129 +1960731393 +669617684 +559799326 +2385056981 +341573204 +2489576172 +3446878688 +2151013307 +1336778961 +3385071612 +964397183 +2177105081 +1018541519 +3110456040 +400891361 +4010410330 +2228196117 +153572728 +3409749397 +4112708743 +3012005981 +2760930345 +1183171216 +4244199961 +1840544995 +239031352 +3104241588 +1395020353 +2510557151 +3586986273 +1215701153 +499435820 +2918992374 +3989394778 +690754450 +2404794361 +4265847007 +2143120560 +3974258780 +1963494973 +1315836372 +2416889571 +3893570156 +798281755 +3105415053 +2829903115 +1618207896 +3788061236 +1722068048 +1515707191 +2195977186 +1085717455 +1972240601 +3534994730 +2930973046 +30239734 +4109404764 +2856048221 +443309473 +4115405248 +2881163202 +2958127146 +1501572725 +3608499185 +4141687964 +114970833 +2884594787 +2674216153 +3597816665 +681753160 +1790296161 +1750968097 +3709191339 +2314918335 +940746406 +144564472 +1709159540 +2843479426 +3048700456 +4224196283 +4275403385 +963346943 +487043468 +1345057140 +1226824227 +1838156812 +1515925381 +3246577932 +3172937643 +2248782483 +4010279200 +237569570 +3147107337 +1347015433 +3032062457 +2567573594 +1429112155 +3884584471 +3678470980 +3314468979 +3307948751 +3704461812 +2009335453 +1155686492 +2416745684 +2855044763 +1574704771 +1633949308 +884773264 +977367873 +2543258371 +2343630449 +1788640028 +3424449385 +975511082 +594709901 +2162229977 +1544646740 +1744041834 +786818204 +3027760758 +2155344600 +2793752473 +1194207602 +195229046 +2251847464 +1383259646 +1268850704 +1073773608 +863508084 +417047148 +587545909 +4118133548 +2612156242 +3944502888 +3497900842 +217168038 +4206356486 +1143050321 +2498421370 +3632121235 +61263649 +2910696028 +720097578 +3108188527 +3448878754 +3443812928 +947923455 +2175303337 +281646494 +1023005678 +253505018 +935553016 +1240139029 +2866556868 +2189893256 +252299093 +1608606802 +445601700 +288528011 +3803653409 +4250313948 +262880670 +850839896 +1247914007 +2442831877 +3098270543 +4247580730 +238727172 +3011844231 +2188334137 +2775537761 +1632652092 +2856717274 +4280197648 +2364234049 +282194471 +3023351934 +2656001651 +3601576627 +2058869896 +2710774326 +4167458741 +3489994894 +2908888589 +1586320174 +2379598303 +201187793 +527551002 +864373982 +1867619953 +524642490 +2714508456 +1384453532 +1454746576 +2852321903 +3801567977 +2747299148 +1270875217 +2429214813 +1746662690 +2404131893 +1836947881 +3430898009 +3469148151 +2402939509 +2444350486 +3226781037 +2077588373 +1526860588 +3371992756 +2974271362 +3695412862 +3911805398 +1603721842 +3084020978 +2923620464 +1119120136 +266915796 +438217830 +1515064084 +1683519234 +3707605647 +3763230228 +952962271 +3000714409 +824254897 +1402334962 +2478281980 +1552046304 +2525306647 +580237065 +2270001939 +350150581 +1261684585 +4131316519 +821213900 +3836870223 +3782127757 +1429576508 +3079341913 +3682427254 +4003844759 +2678458826 +2748852051 +1428190693 +34844994 +3739542442 +4012642535 +2909217469 +1683530020 +2359244261 +3538321472 +2030713516 +286128536 +3855184086 +4094077344 +3714483720 +2241971778 +2509804397 +44820274 +4183115138 +3047649962 +1229215309 +2350891964 +3912737296 +2590991440 +4087966029 +1106564837 +1344565439 +2519671579 +3092285313 +3609499639 +2522363562 +3751533602 +2273153435 +2693956530 +1898908745 +540147941 +902146414 +2449708464 +1852118020 +2329497789 +418103239 +4291383872 +3039355858 +3339719394 +456554329 +376664585 +4271267789 +1840326458 +3629179409 +1141649815 +1626557467 +584856185 +3579638156 +3634855264 +1660930820 +2973519415 +2936422533 +56647071 +3013560172 +3028665419 +1492693580 +2810799099 +3818914635 +311202578 +4074949032 +2608122314 +3516486843 +2785712376 +3941077561 +487385272 +1600066155 +2227500216 +3541630197 +4275088082 +3940590152 +312337193 +109883280 +122258912 +2231628962 +3871301722 +1724731610 +3325586234 +3194975333 +1059425562 +1659184939 +76552412 +1275653060 +63807200 +2052942916 +405611440 +3264024192 +939901586 +1242285179 +1218324007 +3615742139 +1094785796 +3770267916 +1327900021 +1536358598 +1326487538 +606986918 +2687675393 +2767768641 +231323901 +4163849695 +1089411364 +2197538139 +3680379375 +3344494662 +1094703252 +183741359 +3640043291 +3756610145 +783969981 +1589352343 +1449275099 +250651936 +2120865181 +3387779928 +1302009545 +1618324671 +2992677238 +1151400551 +879771071 +2725795105 +3813977585 +3168229776 +2541530857 +1408936777 +4082187896 +1871042330 +1567258547 +3966469476 +2955100461 +250255847 +977876625 +2147253577 +4105465628 +435865435 +3992321179 +2119758132 +1002913380 +674455675 +98432606 +25100052 +1096547010 +3453695201 +1231402309 +1780898105 +3104330849 +3950987479 +1114623294 +3733869541 +95838221 +2071522879 +1995526398 +1545012508 +2102669005 +2420724697 +1672842256 +219405931 +2484015988 +3200564461 +3380500882 +799513064 +1861205941 +3599260620 +4122649693 +1568752569 +1274529948 +643830716 +2662097612 +1069944204 +2081836386 +539059152 +2121109125 +3490629015 +2408253655 +56259298 +2334354199 +928568374 +1401973487 +3428303622 +373896257 +4193966088 +190334650 +1664213754 +2510405464 +3525049939 +2189259174 +3189514018 +1504369099 +937647705 +241083659 +1258640028 +2794381486 +2233306329 +1011215009 +3104605888 +2121188239 +2353067970 +493678549 +3675030242 +2185431242 +1851801560 +1954802566 +281659846 +13799726 +1453705578 +1808870039 +2690413732 +627969464 +2860221920 +1737134989 +4125892496 +2351075180 +2934254129 +778535606 +3443875191 +2291780211 +205056715 +1626119590 +2705455524 +3729704606 +6139439 +3842619106 +1747190422 +3123243789 +1741345141 +3562116879 +2605045913 +3773493109 +2256797707 +3884601490 +2986168880 +3725633587 +728754972 +3339069334 +2909431521 +3936885525 +4152335001 +690767912 +425561028 +3107357179 +1401239902 +806217310 +1110023233 +2263997399 +1119608028 +939309607 +840407703 +2305368780 +1556192398 +3064995187 +3449963529 +2637173177 +4218694298 +3898197543 +1461121474 +3651104988 +559783958 +1110943299 +3231933558 +820992916 +2873556902 +3369989706 +2447568124 +1394671326 +1052664224 +3944275775 +540794676 +4210122379 +1461109519 +2011424392 +2986289989 +4268096214 +2325505555 +161906651 +3523498558 +1001834090 +135998862 +2124423140 +1836450141 +3398231613 +1186108903 +3329694229 +733506288 +4244091551 +2281892755 +2510970646 +1253493743 +192952924 +1761119202 +2561400136 +1975520694 +1717120361 +2791300802 +2598573164 +2511098819 +2883542330 +369690404 +2208079720 +2185842177 +2419531895 +473952893 +1130221763 +1726236766 +1517840975 +1376485117 +2888857355 +692560948 +3969480022 +128588174 +2141143277 +4246195000 +1961353034 +1199483856 +2358820515 +2362170768 +900271435 +3066500976 +2517919453 +1932637581 +3723042738 +1521801386 +3739769783 +3686863822 +683664902 +2450334889 +3215849299 +2415804237 +365033823 +2318236535 +2625888135 +2581855471 +22377324 +2852603660 +3174553561 +3941658290 +787442326 +729484476 +2252503476 +244943852 +4033693012 +2022741034 +3216699253 +4187847218 +1947264615 +3859813251 +4070685032 +3358104641 +2674603641 +101074433 +3614637008 +2825756874 +3103796811 +3212486931 +134004112 +3912540490 +1195437797 +3434500613 +761237527 +2803439981 +2843313375 +3403374166 +2566807684 +592963605 +3408433639 +2469013392 +3988089716 +3080052434 +1872409674 +1405155978 +2739586944 +1449611718 +1960292888 +2071701896 +1267986031 +362950578 +216762587 +3431969175 +1513021211 +913979715 +264080631 +3921296780 +3710890044 +2202549462 +465416165 +387707877 +603082877 +2961845986 +1207239244 +15833079 +3423529613 +3154498655 +2928635787 +1239811031 +4219965835 +3412221044 +731909596 +190943099 +1428291084 +4052411142 +382619255 +48148264 +2233361948 +4183096607 +891944920 +3179511003 +2741234998 +3482727481 +1684175835 +1969938175 +3280832787 +1834274119 +1298835094 +3467533030 +3523463596 +460213113 +269497398 +3094998269 +612796156 +1324234204 +3703532785 +4245124304 +3899528928 +210834735 +1091829992 +4080645255 +3250481520 +3188110935 +2554806369 +1598273313 +89792139 +2160301039 +3774693648 +155018092 +4145131884 +1252177920 +2110997747 +2131031310 +490121845 +3579542979 +2752934632 +2298694838 +4078249808 +224589050 +846508321 +523746519 +3603764453 +1672160240 +1234273911 +2939578811 +1608220092 +2392369237 +2894552218 +2496030026 +4178091729 +2502355148 +1646178028 +2452116541 +1894084441 +340253989 +803777358 +118321084 +4068901312 +67246786 +1896760888 +955785689 +2491983078 +2219850810 +3090880481 +739268151 +136080628 +3450535010 +814249626 +1055081886 +1382103965 +1519922554 +2178133616 +71881308 +2820216307 +3272558849 +1089824221 +2338994328 +2435376069 +4014815299 +2735078257 +2587861516 +406772784 +3434872417 +1751472210 +2572293287 +1619998589 +2393966033 +965726902 +4241769761 +361164296 +2887835585 +3324555664 +871122535 +530802500 +1022435177 +1606035329 +4111244803 +2010572247 +3783649932 +3789594050 +3084720318 +2952226075 +3457624445 +1500602251 +2807343178 +680973374 +33062479 +792655418 +198345830 +2552086648 +2399139892 +4183209301 +2341786170 +1053847062 +3043045505 +1702258834 +4100895544 +352291241 +3877244721 +3813720923 +3172641187 +2434860089 +2579253863 +2564008272 +3566160948 +3951574808 +3364786580 +1864303678 +2396329548 +1098178963 +3442113568 +2675761337 +2229417567 +1991043294 +820203209 +963204451 +2118517608 +1641332437 +3821849735 +3077361115 +2775306036 +1193885388 +920022332 +328171860 +3665251487 +961131431 +3421894630 +2500004483 +3805870780 +2823186320 +599401155 +2649791515 +2915748024 +1803596505 +1671476227 +3150983011 +3634648737 +34900047 +3330227434 +1971185103 +2679952496 +1067522198 +2754635781 +2280306637 +1009310443 +1695163050 +1938373121 +4278990644 +404337842 +707232676 +3900329553 +1689364800 +402829884 +3827399243 +888203583 +1603718228 +3729703774 +3924056802 +3871583932 +300949108 +1861295558 +115711167 +1069705052 +2183568167 +681296168 +1257415776 +1074769948 +1689138392 +2652137437 +1257483075 +2832304260 +2821942540 +1621431908 +3341509017 +3506748507 +1675323500 +3063075133 +4219053072 +351090742 +2750995818 +965678080 +971107257 +3929402765 +3135613752 +4170371149 +1078537978 +697379463 +2842768181 +2927844146 +1402398643 +2494778940 +1503833303 +2832201623 +154973662 +993670697 +85376913 +4069481070 +744053082 +1764762591 +13352372 +73562979 +952035881 +3617082400 +4278223844 +48454973 +316313494 +259255153 +3851797356 +3544660307 +3121860413 +1588777131 +1557394163 +2095418367 +142074093 +3639388844 +1091693083 +534298938 +4159320373 +2296992053 +1491350768 +734045233 +3330428379 +3369051474 +4132070015 +4195672835 +1845509139 +172327655 +4083646675 +2767937141 +2045083047 +3879165142 +490982838 +1454817681 +1498730181 +856183160 +1985284651 +3793492212 +397736226 +222482496 +671488035 +947799220 +3907763232 +2662523469 +3766724532 +1081881003 +1870212160 +2794977115 +2210640495 +3631394047 +3832502265 +3163706371 +2662728671 +3574379350 +3614226071 +3565556173 +3536122276 +3361609484 +3136350953 +2328598827 +1902444091 +684320006 +927679839 +2068980748 +1369610964 +3585442291 +1498514697 +3455376395 +2495446452 +2749715079 +929451202 +2148650753 +1840251654 +199142011 +2078497219 +3570965911 +3834474759 +4188677282 +1541238076 +1846233814 +3663342557 +55838631 +1357211938 +193557983 +557295528 +2863841065 +1158638075 +1981576751 +4167733870 +2857378851 +2434919276 +2954427258 +2975034505 +4258056524 +604070199 +3955933534 +3787851285 +1492439569 +1587942249 +4743196 +3804355590 +256188339 +1275647078 +213450066 +1385454790 +630151931 +33441890 +1002765910 +490653007 +3484731131 +4128286323 +3968392751 +3533260940 +2301992164 +1630340183 +937321853 +1030684900 +875199166 +2403556603 +2095515505 +3778004855 +55944463 +3058246540 +2433207735 +3913961278 +285548800 +3024640759 +2465515912 +838942013 +1014175005 +966202841 +2931086951 +1018410699 +1176866739 +3468017474 +1827743432 +185486344 +46945919 +3242792921 +3055254194 +416142236 +3866750786 +3539110474 +3142108966 +479026221 +2657658078 +2019223145 +286962339 +60561507 +786123002 +999826166 +3060254790 +2485258729 +1841635696 +3367123388 +1176841562 +4043028822 +1464735186 +2857445925 +3655492806 +1202858255 +2540463145 +3761518553 +101905704 +1077529326 +978859755 +2405591666 +1458069365 +3466386490 +3824756135 +1176970821 +2002643211 +1431782842 +1840886885 +366916660 +2337964398 +1867189543 +2134243068 +3852417411 +2789159112 +2612629941 +2159829430 +2541744553 +198235113 +2578934205 +2467063036 +2080304342 +2976119014 +2861941367 +2227205692 +2791576117 +3680402387 +3759174017 +4174850546 +1128687108 +3030697802 +1677989045 +498919724 +1576064016 +2511215049 +1576549066 +630499026 +1348101703 +3240871115 +3681769229 +230699938 +3792115999 +3713185977 +2747397978 +3457100947 +3133197786 +2356324462 +2154620559 +1299637899 +2009183020 +3991874360 +3551726957 +1842758543 +1679608390 +331502886 +2923399750 +2145568466 +718784043 +3376269856 +1830432170 +2481723739 +1731085589 +3400083218 +1970810426 +3160546236 +801627213 +2056841678 +332328807 +2875869333 +19516003 +986311143 +3468188270 +2083358448 +3016264263 +3734535997 +1801542948 +4003064725 +2954311692 +3173157737 +762786177 +755924659 +1213506694 +35391957 +314616057 +3097796537 +128628250 +1160441288 +1643921487 +851298913 +1912281222 +1496792687 +744578241 +2201678554 +1647802714 +1264955269 +3917275533 +2788212438 +1879949306 +2756335986 +3465824082 +4291999520 +116212784 +2867701520 +475592678 +2444624833 +2499076723 +1021622288 +1530264554 +150609127 +482716998 +1918200242 +4266782198 +826809758 +567102026 +3974941713 +2159488895 +920419061 +2417710430 +2365057231 +2791602759 +2353028317 +613484274 +1519378868 +1775329585 +2309200080 +1037285357 +1990129728 +678541157 +3282474546 +2495737797 +1798068023 +391658537 +1794079408 +1553138653 +2331317921 +3241010335 +3813952125 +892502527 +838449997 +1579069715 +4149464115 +1079686327 +4156741215 +436775257 +3960632067 +2631019669 +3186833348 +2283624842 +1891170446 +4080438165 +2499779984 +3491469064 +2218576245 +2354232017 +1565346025 +369441536 +3740397700 +2855677297 +50863197 +4101719280 +2555213980 +3289714823 +1142263760 +2117011936 +2252474591 +750134441 +4239418129 +3297511823 +1091125918 +2096765677 +1550190099 +735385348 +1579259395 +168818442 +344445650 +3644681974 +1504899568 +2176666112 +133373047 +2963694943 +29762050 +2585259069 +4133483248 +1281888641 +2647980554 +424044158 +2630513517 +3699500740 +1779843568 +1996716498 +2319652228 +951392438 +783988763 +549515405 +3036760636 +228340540 +1942642652 +296552943 +411573183 +392169162 +3108544744 +428877419 +567762775 +2241651837 +2667812975 +3550346598 +3431173316 +3586093164 +3104351709 +3007254666 +2250173054 +992563246 +1124813146 +4060580172 +2051594266 +3261297186 +256965879 +2909125197 +307151745 +2648699216 +3201617339 +779101521 +3662855043 +2619247061 +1450354515 +4100692717 +3200257136 +1463691912 +508597723 +4043067614 +359227080 +2977537527 +3342275085 +3822505048 +3329546118 +3494156560 +3399300955 +1482841165 +917936142 +470444776 +1250081477 +3563274138 +480583819 +1918007477 +3795703340 +4020967008 +200841726 +528963365 +1926555133 +4238926871 +3771684750 +1938812905 +2154230155 +4155319825 +2016712627 +1013066473 +654378447 +1739041578 +63341180 +1665465509 +1692742700 +1898497836 +2908561606 +3212555658 +1442078086 +3560804162 +2926068759 +166305835 +1204145511 +3480533001 +74374104 +572311216 +1835488418 +1602033093 +2611846536 +2756043256 +772567817 +23710452 +67271441 +1258037690 +964576264 +3104371556 +2208513530 +645672291 +1678679155 +1829121862 +2114972590 +3336926662 +1875819948 +2533047494 +1313084492 +2155067054 +24765256 +2014196892 +1965932008 +4185061618 +621515617 +1408304676 +2446688332 +757157036 +2045568481 +1691633066 +4185656143 +3966156494 +3955500614 +1688760886 +2378371482 +2414585928 +3261895362 +4213972047 +3656211414 +982690772 +1513362157 +2186702638 +2747389859 +1069310541 +4060255973 +4240908532 +2536056074 +755177718 +785183613 +1057976584 +971549835 +918021515 +1507113159 +3800756096 +1650376339 +2904824194 +2212732141 +1784349972 +3167669100 +3534195587 +33476353 +15475920 +2916218182 +5794628 +3563648362 +3758620966 +188029557 +552701417 +4289119474 +4107500376 +659384650 +3916679610 +3017168399 +1954047874 +262945463 +804936219 +4080040359 +2759852742 +4069036452 +2154846547 +1779468257 +3697535759 +1839082598 +1142813470 +2286058303 +1812371149 +3518475585 +2674089041 +1833219069 +212228374 +2795979162 +266382415 +4274686067 +1950294043 +4010544069 +325301441 +686439470 +2204153883 +3813051450 +2764267348 +1293282082 +2153463256 +1323479395 +2776368596 +1948157216 +2308312522 +2691480245 +756272870 +4031732536 +2555043869 +3940710481 +493921579 +3966995936 +1306094621 +718657694 +3564062817 +140107482 +109717420 +287566635 +1378057619 +2583689213 +3082314202 +3374004442 +56974787 +413698675 +1506527953 +3590927908 +3610939763 +3987868779 +1262149415 +4026827206 +1875003930 +576989864 +1183483642 +629539547 +80904354 +1656707075 +2915155003 +3207883055 +1899551095 +1105687079 +1177396444 +1431081782 +1642677469 +2750919818 +3166204915 +2138209692 +24681795 +1990670805 +2888854113 +4170780280 +3447359808 +3017769031 +1745800472 +2183071540 +3850428880 +132515560 +3004942631 +1462667522 +3699842183 +2140377493 +1054877393 +1640658077 +271899926 +2632917991 +182246749 +2940461142 +518710507 +267989018 +1709215063 +3823384707 +2045250082 +3747865867 +2905300682 +2070772728 +2435510506 +727363444 +2452846061 +1437563159 +1375460344 +140085685 +3240740540 +1090171906 +3293349273 +4064582298 +4001991193 +3824401636 +1592845942 +658565826 +4140365249 +1982289377 +917866369 +1512218968 +948240591 +88510079 +2508385478 +2186178943 +4206658297 +3938640772 +2410692749 +1232672704 +23190785 +3638702363 +3628446216 +1797938403 +3257628707 +2577423135 +2025139131 +3436364912 +3974270475 +1897415479 +405473027 +712233987 +3398901337 +3098279349 +1594187207 +1213795699 +3941060728 +2572385350 +1531078536 +604041643 +2122381843 +1211549506 +1809734021 +502723555 +2952365700 +2831783989 +2742540510 +3015295738 +1622069895 +2174363117 +2027115219 +2636938367 +604017409 +4034416347 +2729024997 +3554854000 +1903719891 +166360826 +820765174 +2893052247 +1173992189 +554636453 +670143353 +4200387468 +1951805482 +4099899842 +3340940625 +1020377022 +1556662452 +2953442615 +2672084893 +4265257235 +447247002 +1331962963 +2978464877 +3497199160 +1325854402 +111891837 +1548760723 +2060559075 +1768591180 +3956968245 +864632690 +2376745912 +2156794411 +2857936982 +2241683133 +3181749614 +2088130863 +2410080856 +1467249791 +468703961 +3848355030 +4057655956 +3643107217 +472575749 +3926100497 +3878969020 +3108491493 +3169195449 +2348527964 +1917854082 +4203037726 +3025369273 +588778764 +741190805 +2610708747 +1958206095 +1258677833 +730941968 +2761515572 +3369548809 +1881606406 +3112636116 +1463105112 +1744968801 +3730081672 +3040865120 +2343531400 +631781521 +329225624 +2890964445 +2524198295 +2003947177 +2515970912 +223342157 +462282019 +75110040 +3582652152 +281043868 +3731859581 +1499196684 +2128937408 +4126346011 +4058149595 +1008704740 +251170456 +2607577391 +1599069103 +1591654983 +756043616 +4261333144 +2916746491 +2418314145 +3035795527 +3171604049 +2104465422 +359220895 +3167794005 +662879158 +279411998 +3292017011 +2364134418 +3487539898 +107933423 +3878282620 +4179152314 +1046797158 +4114290196 +2446327700 +3363675053 +2991705859 +1791114571 +831129837 +1565013664 +746707465 +327528040 +2388916686 +1351047030 +1559809537 +359484891 +1500108678 +2245800518 +2104094736 +671129021 +1150257294 +3391104345 +701766765 +3140511347 +3513221647 +1082722575 +3883540361 +273753511 +4108931923 +2631056250 +4048282343 +1815753432 +2062218136 +2154630113 +935947966 +3581282902 +3024238562 +2241205062 +821681376 +3433485934 +1131263183 +872395309 +2293817780 +1788613816 +732708852 +1063310912 +4019398519 +2753513671 +2810878787 +3596264670 +3848471699 +2661864786 +2787238975 +2651138163 +3158788998 +4024747748 +448864780 +483279784 +2898585675 +2339176231 +1042597843 +1022034504 +2879368484 +2761490975 +3406940043 +1931212581 +3150224320 +2631658731 +2904880430 +611224948 +538189877 +3946208025 +1332319860 +1558896396 +3984962230 +3162614895 +3719264089 +2185119474 +196263499 +2797726449 +3378331379 +47525393 +1426579393 +774720257 +3788906033 +2436492922 +845583754 +1652905142 +2087560667 +2885739896 +2690225363 +54530304 +1196293985 +1508659410 +3077565504 +1811871706 +989750245 +1024551310 +2441249371 +2437844929 +1872516822 +2665050709 +709065271 +322825947 +2690912614 +2504903823 +210890647 +1794545486 +2441164939 +2577225361 +3174830633 +861747951 +3785818343 +1733110974 +1139691856 +755380839 +1280341368 +4042514670 +2351294925 +3614968347 +1190252040 +435969692 +3274287738 +1110065558 +41913844 +804851208 +173185559 +4249579131 +2687388502 +2619788590 +1525899480 +3163741173 +3325993266 +2358819978 +2726633188 +2302558579 +1352291776 +3184881851 +1913993273 +4241433006 +29078551 +3864184136 +6226831 +2759458379 +3237318309 +4283331876 +1574033205 +1732140124 +1851848359 +2250200405 +3138482940 +486516934 +637451760 +753247177 +2349211173 +625112824 +1580093960 +2577188706 +4183754677 +2077956674 +1201745465 +3877580273 +3329976645 +857748338 +2766442583 +3796217189 +1347160316 +3456172748 +1079283991 +598866337 +2513352275 +1852264796 +2448561576 +3224757425 +3259008624 +530957471 +4292066780 +501399784 +4264277991 +4058424560 +1575952755 +2628377857 +3518790254 +356411173 +3578162879 +978385856 +3054333573 +1521422254 +1842226885 +2047721199 +958213802 +1438850242 +1245818940 +1356160800 +3039823056 +1584852267 +4267575744 +1749558887 +2108264837 +1488533114 +3287898113 +2685115357 +805824061 +3822800072 +1689372932 +2616101948 +729956148 +1562220300 +1132401730 +3392852277 +3735524310 +123368740 +1888031660 +232773873 +182408750 +1916331085 +3614533640 +1578421470 +15405053 +916178006 +2690548122 +164881635 +3344552135 +3274219742 +3940631354 +3151922463 +3409901808 +1543756717 +2806356076 +1399050765 +2135636768 +494497538 +3227859248 +3192159062 +1697482672 +3586535026 +1242094305 +273664585 +3170210774 +424670438 +1396590269 +3078602566 +187273833 +1349973958 +4263822817 +551854726 +3131672344 +1770822470 +3757800698 +4056675897 +1607510806 +3899085267 +2318777266 +1315285722 +763685328 +3327274742 +2874088291 +3508755493 +2085146644 +475792220 +2800801248 +3716596859 +2750778579 +509793276 +974608028 +1435576618 +2520054731 +2211005831 +2419667961 +1940185738 +3019652374 +3590023513 +3688553539 +2278595886 +4195528181 +364000244 +3323502632 +3189923684 +1010238687 +3639017579 +4131602307 +4080271554 +2284902738 +1020915922 +3102542754 +1736548871 +2999900724 +2220015452 +2892112239 +53371893 +499959597 +3502597343 +691154410 +3154761371 +933910162 +3921845160 +4150187389 +2053760768 +2602982996 +3085020451 +2397373213 +1151365540 +207222177 +950244186 +3554083161 +803471381 +1185789083 +345699230 +876523645 +1743212742 +2159503839 +1212415913 +1823573125 +3963256235 +909650467 +1067524259 +141667778 +320599473 +1946849897 +3415967387 +1992834272 +222896725 +453412754 +2684271964 +736872171 +1733831064 +3215826059 +838965292 +2395135387 +3744384673 +3506353396 +1649951322 +2385769185 +2536405490 +2063968452 +3549210921 +1806613368 +4058940063 +2315243095 +3964341444 +3052306319 +860542128 +1739312217 +86672337 +2018139050 +246405752 +2673550754 +2170312757 +2729355641 +1766962907 +1724512072 +2872678266 +1568663198 +1708660913 +2701057840 +629616760 +2152293265 +2451722047 +3842049472 +2757564003 +3968421390 +2011838017 +76750527 +52981974 +3456489694 +2513731538 +4243539209 +379243135 +3162450419 +2472332074 +3655921705 +2689614415 +952935412 +2391444993 +2630783709 +4134378603 +1264218784 +1961434899 +796533788 +1467217940 +2862528864 +2833184623 +3992012189 +4124206121 +542293067 +1593908906 +1211462571 +4241122284 +3009485715 +238610242 +3521550058 +3085139326 +3242573598 +802671348 +2843285047 +1933468272 +3382289208 +543582116 +957009548 +3243724197 +2855331598 +1108601079 +2926380762 +503317475 +1573694987 +652156337 +3775596348 +3296989732 +3955477429 +2558827376 +3388848714 +4232587065 +1660722767 +3158384596 +2049193723 +2655609289 +1870799770 +2382435448 +1308693869 +193449089 +2126427288 +3473310389 +3490200925 +1817663219 +1418933966 +2792502766 +1423381216 +524639709 +2565634232 +4051426163 +1427449417 +1174551167 +1650948865 +1955093412 +479422765 +1125291866 +65104943 +3938174377 +977269455 +2195915653 +935282397 +3994144785 +2677189825 +4186190443 +1606778902 +3015786830 +1896427380 +3229945708 +3533138046 +3178607343 +2335770482 +217274864 +2177703702 +2022531946 +1487489721 +1611095186 +2173378751 +2577464772 +3414208436 +2323731073 +713334413 +2861466623 +1520056970 +2607404499 +3559540365 +2100175022 +2526793205 +3863899741 +3817620772 +215585722 +1939275309 +404070329 +3707227947 +2495885983 +2723342696 +1418287907 +2868575706 +4185160641 +1827021705 +2244085030 +1960931372 +3265629595 +1549911435 +1578176969 +1107765910 +3223954116 +2275815946 +2028633717 +1953121917 +1548448780 +2657156228 +2034973272 +3990104428 +559141935 +2715670005 +2003961914 +4195405474 +3499935375 +913912928 +1997654245 +575631221 +314927881 +776449345 +910692647 +2576094226 +3398763574 +1311490024 +4135634805 +3001949589 +3520110912 +3408222631 +793657078 +537899682 +990526076 +883748562 +4038991810 +1969343266 +3030141334 +2597536750 +3942680289 +2210239878 +21277744 +3650497576 +3768033373 +1415642248 +2253447548 +3671470768 +706096584 +706348390 +905787700 +1343082637 +736704248 +714527427 +1245913480 +48829441 +3324173765 +2894868964 +3790383331 +4205870112 +1277125863 +60134108 +3094393341 +3434247090 +1255030061 +2189623936 +3957520301 +1551299361 +564282356 +3933968463 +2731359377 +876963718 +2976188136 +2466620584 +3599573429 +1714747671 +1691173867 +3875279126 +3513086160 +4169932575 +4174982830 +2202032466 +3955286301 +143889246 +3997320458 +1251713235 +1839658690 +3999559273 +3367699356 +4250473432 +1631168582 +1462204950 +1009638369 +2571971360 +1418920779 +528315340 +661731373 +1292470109 +758514377 +3586901819 +3575019644 +2053559557 +547621568 +4107205004 +3121534331 +2705713692 +2136065866 +3537139608 +4217901960 +790980010 +3852448576 +4277412220 +1720943555 +606759155 +3172064522 +1538885853 +1687918965 +3590168546 +2260583798 +2356264109 +124492480 +3541100031 +2735686438 +3397408515 +759069154 +589513926 +3096042580 +2377875310 +490638414 +3413685352 +448127431 +2132400689 +52665598 +4245818015 +2545804657 +3675222799 +1619099782 +3196168584 +92431555 +1680335786 +1295226183 +2492809553 +4149279500 +1184681677 +3148955010 +1898483201 +2343846814 +850696249 +34059760 +3257004140 +2022223129 +1146138490 +2165417043 +3904473886 +1039842121 +2749138603 +2017037413 +4100357225 +2230753947 +763523229 +2336136132 +1826414275 +978229136 +2897031396 +3915190156 +191733946 +2199398246 +2091232072 +2737564968 +3536476167 +3792933768 +2936398539 +3425969426 +2429610655 +1115479090 +1337709298 +1707664641 +2416650193 +3018760511 +2554504232 +487780253 +892289872 +3207815156 +1887638358 +3606742430 +166930234 +2706843063 +1327988290 +1674549221 +2003404390 +4206264099 +3542042013 +439019725 +277788293 +1203766537 +1129799526 +4239736136 +2047894863 +3688132522 +1533168394 +3756807333 +981354496 +2809569579 +907163489 +1357537833 +2236438921 +2191760947 +352841042 +1104208409 +1228190738 +3444539882 +1673583696 +3394373391 +2806563384 +1800179937 +3659667449 +3342517451 +1542711439 +3927562037 +4132879445 +1907120326 +3185868320 +1762792651 +3878811933 +3516122220 +2330050679 +2117808697 +1524030568 +2864958566 +1320228936 +4052579095 +3297495761 +2650545537 +952141747 +954327898 +617540717 +788503427 +3044699325 +4235404671 +3945878190 +2122456959 +1231521599 +1847146159 +3634856411 +3242999586 +1389089609 +1936868473 +1744229161 +1583111194 +2510407008 +866181541 +3859097376 +1347534371 +3622212407 +2675197803 +3253461184 +2236107429 +3451437510 +1479920084 +1633476571 +677291909 +1037975733 +348472764 +3283205756 +3225777573 +189110454 +2943805391 +2634657415 +491456169 +2718721871 +4048262076 +1186310135 +4051025586 +2872521829 +2846602246 +107031321 +3644243442 +1695636690 +1815329633 +613129221 +2415274638 +802442703 +730623451 +464176165 +4029290555 +897632484 +4243422811 +572822734 +1618541279 +2201634092 +3159677727 +1847820527 +4136135302 +1805315149 +589694627 +4025043085 +3082863635 +4120930046 +1468991689 +2993242063 +1376781855 +3998302422 +15878102 +2753414346 +4123454577 +1612484906 +1384557120 +1478092643 +2583803406 +1205157381 +236887947 +1010821406 +1703286139 +3915199031 +1033519956 +3045091628 +2481673392 +3098280586 +480955469 +403305349 +1122143308 +2868245699 +3180944043 +2721621584 +3352769801 +810622538 +1105197577 +2287645775 +4219367684 +1371208517 +3314580458 +755170913 +3375803408 +2929078913 +3210166223 +522926820 +2391942335 +196647181 +1417756596 +4010966014 +404028533 +2265693444 +1840018044 +1042069748 +2917850530 +3869487372 +1253690843 +2308751096 +3041708341 +2142665518 +2674504873 +3117607516 +1517340617 +1840635447 +1851025181 +430028372 +3948016875 +3078784145 +641073828 +2781690782 +567835842 +421104470 +2910927529 +3280130739 +1057919222 +2522217822 +2034789172 +718535597 +3854089009 +3393220396 +2691394141 +3070100530 +2269912647 +2495505817 +953289651 +908428464 +3353678831 +1851738781 +1311886876 +1757040119 +2879681573 +1422404777 +1521559540 +1916768394 +1763713630 +1645504749 +3378257606 +1471703130 +2738664120 +2946788346 +1612894696 +2979839097 +3938205472 +3935343300 +1378045407 +2914513479 +3741825932 +2151336631 +2555970892 +1020015089 +3582419753 +2720136158 +1538862171 +1722484543 +1429510499 +1049727773 +2884795799 +4008041557 +4139101201 +2095599323 +2676029481 +1885412647 +2036769132 +3006456500 +329110068 +2894996313 +2756010697 +3326258286 +4280015272 +1417822262 +1512680297 +1721663561 +901908273 +3326584480 +2047331005 +2265272233 +1188960988 +1931229170 +442425124 +2503331803 +3559977940 +443535529 +1644039523 +705315982 +444781981 +2067318636 +3881113421 +2484755947 +2864952177 +2582825941 +2415972303 +984213047 +2232653321 +3299739901 +2590945919 +2695140438 +4091515692 +1359484997 +3758770988 +3618249280 +3130873020 +2563399096 +2497718669 +4066318923 +1932718742 +1293085070 +3271781152 +3066654178 +3911833571 +2260612689 +2496738859 +695711378 +4241659368 +793047533 +570831597 +4068009169 +3392647953 +801321787 +36339008 +2842280845 +743755975 +2681337142 +1735730024 +3148217625 +3377493681 +1978786512 +2063889016 +1503649117 +3147825334 +2392040408 +2475879594 +2189295204 +2260485938 +2133754155 +2658968450 +1682358899 +1652882009 +44120004 +488510861 +3911462557 +2626428792 +2016972495 +364515859 +3487719162 +2469243848 +2939592169 +812186701 +4135914826 +1831980967 +2020804829 +3980333647 +2738544247 +145587081 +1269295640 +2516916971 +2184289396 +3012399565 +165448813 +1567998792 +4254573146 +824363421 +3050578803 +1416582925 +4027373220 +2509220512 +3875662889 +538021836 +1607549631 +3224412540 +48946809 +3422688682 +350352752 +3191345520 +2624556127 +3691878105 +1370762190 +3405399010 +3552287747 +3096355497 +1622678635 +2857618815 +2971349421 +1730339684 +1980595318 +677885500 +3049776865 +13752073 +1644279562 +3924855284 +2626428663 +3232477425 +891567566 +780464319 +3310889151 +39863975 +3446112993 +2607025196 +1095269961 +3627055788 +1506903791 +872953245 +1588528115 +3934421542 +3188063009 +2162536898 +43421828 +3038291934 +47759990 +2221880433 +3201800162 +771473404 +3040210491 +868171030 +75836222 +17088386 +2811605142 +1719284761 +3438067046 +2165992732 +2707399457 +974049578 +3454959829 +541525093 +3582920222 +1022291353 +2844428610 +4025997214 +2099744306 +135367152 +1764878704 +1253908926 +2975312386 +3736203896 +1138271091 +1023515057 +1354757400 +937008847 +2026405974 +3742831245 +2127398481 +3642714922 +745905742 +1957594847 +2670811978 +1246121771 +1311035259 +3955040548 +2636769137 +3057804079 +281738832 +447168938 +1827136005 +4172964455 +3143400853 +413054486 +804753041 +708939261 +1150811347 +1936879564 +1511384308 +1620020669 +2085357721 +590180769 +2424301526 +3113337313 +2122986675 +93960951 +751228369 +1819665526 +327310555 +1037104147 +1146068009 +2706810568 +1321792593 +1027082279 +2293028470 +176540704 +1509768714 +2929085037 +619711979 +105403043 +3219196197 +508921017 +3957629762 +4239274292 +529875599 +2091197277 +4073121364 +3213268634 +1433208705 +3924950666 +1753339414 +161179248 +4144986907 +2246988450 +3654358084 +711711708 +326463188 +687952637 +3881062031 +4065651993 +421836649 +3487640631 +3550727483 +1344593006 +2890365226 +2357014141 +4002109371 +3261969598 +2211084438 +729039058 +3876945186 +2855067793 +3603795624 +3127222623 +3701485116 +4203011709 +119708119 +762841954 +2798369435 +3569762832 +4099103871 +1585120249 +1198745248 +1486789744 +2643399325 +3233308870 +3685019635 +1184593716 +2931220624 +3359194505 +2827658299 +837395703 +1223522 +1852383125 +3150026849 +2413777540 +280367650 +3044258135 +75720471 +3426974674 +917076106 +4105883860 +4157592039 +1285803959 +2530068540 +2066242304 +2239255950 +1743689562 +4149730927 +1824224192 +2902752625 +182207254 +1997402270 +996792437 +84993887 +4034839093 +3982245365 +1928344174 +665245661 +3694016506 +1383274988 +3670762735 +1948309991 +3278085888 +3687310222 +3461487381 +3279565302 +1665718515 +2896458359 +3270615725 +1654220936 +2462203879 +767295034 +466997614 +1324347257 +3417649027 +3660292542 +3376445315 +3378174125 +2871963009 +2554826149 +2405133602 +1355116759 +4006457384 +3113680574 +2808101401 +2248720346 +837667228 +83280492 +3848554517 +1198695287 +523147099 +3752703315 +650653630 +2414180582 +651009854 +1551187639 +1103027375 +1173033384 +4038932514 +405518108 +2001892180 +3810841522 +3027600589 +1872489689 +4012359528 +1464513029 +257690771 +311805270 +545627035 +869616362 +3700637608 +1656048596 +3275462152 +1574156617 +1941596017 +2830995934 +2374106014 +555086324 +2936885245 +2290776909 +3496876417 +1092694760 +1400252032 +1447869066 +496943884 +3282711020 +2191095711 +2754147860 +3406428054 +2298441092 +1305588314 +1579677068 +265860174 +494575057 +3966423215 +2744468435 +1612990648 +3099786711 +2389174030 +1309265044 +2868873112 +2576393910 +3990262564 +21929641 +495907081 +479773235 +3524130470 +1969663419 +2731031027 +2115433840 +1659843600 +1380482703 +1975258176 +3284458190 +2636126416 +2022944603 +3425279985 +2227316895 +3122575198 +2677153757 +340938060 +3061690391 +2829615145 +1696126141 +3852920758 +582525752 +2233514782 +1414309674 +776467240 +276705502 +1145773900 +3021955365 +1003428408 +3021290688 +1114397437 +577679117 +2349770260 +4258297335 +3338122351 +3299580783 +2112327256 +3067009065 +194261820 +4032098051 +4265833241 +3335836025 +3186220927 +995227375 +1570849033 +4164347754 +477307577 +1024656913 +1437648700 +3551874274 +3693378070 +2501723221 +2432306225 +2953710828 +1116742475 +1066039349 +3399325733 +2917130792 +1403874754 +585170141 +1920133661 +3101803172 +1357954259 +1014762984 +725409006 +1350119860 +3924315976 +1734598461 +2567524316 +2782697242 +3271167251 +4070115181 +1409995972 +3426619244 +2447629834 +3744920026 +484992886 +4130269865 +235190941 +1569430049 +910041291 +687745909 +1818452303 +2909511393 +2812828947 +1974835549 +2146685420 +4197754717 +4197966532 +64209998 +2464927395 +675211246 +928799672 +946954054 +548689258 +1608363761 +4096730302 +386470322 +1800379790 +1419661186 +2417998525 +1392488765 +3219242287 +2508485574 +3522936613 +256310560 +1401501735 +4107666992 +418295413 +3111388356 +2222857987 +1984562568 +3356248756 +590852521 +433037656 +2609546588 +2958655566 +362382323 +3332491016 +3453328327 +2732192032 +3928537608 +4245718393 +4208547614 +1538949145 +2231164893 +2666447972 +3849957456 +3745736031 +3885539707 +1981444405 +3768651425 +2857608417 +1814657874 +2050862651 +3741332026 +1515174688 +1609481081 +2444149570 +1659440416 +2738406740 +1209945761 +4019150529 +2749156763 +2860931156 +415229568 +291102008 +3691437643 +3352168212 +1162914934 +3327741273 +3069665418 +1992544117 +3241547584 +753823987 +2143264692 +3842943533 +158218054 +3593724457 +3061295879 +287031780 +481425694 +1212509844 +1024431863 +721058883 +4213121677 +1320475345 +2660291367 +923481101 +4188367108 +2213856025 +1805405678 +323406279 +3176771415 +2801325457 +1299017299 +3017076504 +3359880868 +798641969 +4053723015 +3647968335 +1526136733 +2155105372 +2869585317 +4209650351 +3970989922 +2001583817 +1716056251 +3802209544 +665170607 +139422824 +317435559 +1303676322 +3670102392 +1828634966 +14528173 +3155482831 +222696701 +3039434523 +2765390807 +868836649 +3840480386 +3573195082 +4107310032 +2272163079 +158587177 +900773613 +896381810 +3209561701 +2981835840 +3251900830 +1756500995 +81467247 +357105110 +3147789425 +688753479 +3565366269 +356364399 +3110190061 +3785658344 +4105951933 +3453617297 +4155593011 +2503108553 +3628364147 +4048044026 +112676069 +2679167223 +195531253 +2558838575 +1884214682 +3436645142 +4046935078 +1580151296 +3602971983 +2518993210 +965579810 +14825605 +2245814454 +735597486 +2114081700 +3848785961 +3601760399 +1798924396 +2155294572 +3450604249 +2578155240 +697766693 +2204415997 +2448365682 +1358721128 +3062880632 +2554426853 +3690550892 +1589491128 +3012698863 +4286640449 +3516048245 +1585271551 +3126771693 +1729825251 +3583055004 +211608099 +4228259423 +2798090918 +3784935805 +2860874247 +960893459 +1359410541 +234209708 +318764535 +3765055693 +4109355203 +2387162949 +3220814820 +2213405983 +3807493236 +1691620982 +1011028974 +3773997748 +234939635 +648789284 +2245394083 +2867522633 +3652111950 +2756058212 +3649067952 +1896697836 +4292547968 +3558789388 +2593057275 +1296845739 +2326406283 +292023860 +2657809174 +4227308717 +2265140672 +3144295733 +955979704 +2838815477 +3945800217 +3985212861 +4055226378 +506414583 +3199706586 +337108578 +2571297802 +3858825324 +2656528326 +2360333457 +3444465812 +3058477885 +1847273692 +1532089053 +2595954239 +3952937067 +623833544 +3423082014 +853913301 +599133742 +1918728743 +3677439507 +1315522451 +270700807 +1890919753 +1906340762 +1260925767 +438107108 +3238508288 +2204944946 +2282726062 +2334399842 +1462265876 +804818492 +3347868768 +3805056742 +1818652120 +719114789 +621464078 +1802116593 +3376883996 +2215310640 +1048546892 +673615739 +1833177229 +3072703947 +4118013335 +4078273383 +592956394 +1571060237 +1671493003 +1920635147 +279669813 +3962816933 +970050057 +2097972139 +3521672011 +760077277 +2149708853 +3029444998 +1725060714 +1539004248 +2653385761 +3860101637 +3534922502 +874258300 +2168496373 +2336800615 +935937760 +1759826848 +2900716258 +822281200 +524193983 +3176347132 +2700326692 +2910560462 +3031012891 +1728669664 +31596839 +2563820658 +3639908491 +564658581 +3418019408 +3489540378 +4027387254 +186527902 +674313748 +1276054857 +883847451 +1275815812 +741154390 +2234337714 +3264695764 +3290931519 +1059460281 +2182336105 +619653307 +3767973385 +992842188 +1342884097 +1485357321 +2255449652 +799783749 +3821494997 +3654161752 +4056739873 +2733880039 +528127275 +3558068302 +4041770988 +2205238589 +833130997 +1893306552 +2285225667 +2342511558 +100763576 +710830248 +1656381504 +3551249145 +1345839318 +2208602713 +3649258311 +649118461 +1056577309 +3866678388 +990165710 +1313673421 +1877461025 +1329378941 +671724851 +2144759947 +3015612871 +854971896 +410902560 +3336358096 +1172380034 +4085607027 +4205684095 +3193729462 +480215388 +3816554550 +1823647216 +2112391691 +950577346 +146021821 +1732386124 +3848348617 +830700968 +4055293053 +3146631699 +585912330 +3419786961 +1283873298 +3613450530 +1542468431 +1249106217 +2558519453 +2009622840 +2041330924 +799311983 +3842802231 +3441394598 +1757436480 +2991631347 +1606995500 +195675150 +1611255526 +3225050106 +941285138 +2261127652 +1772075654 +3647852755 +803288876 +6155622 +1170111353 +642190749 +2083250877 +2627472652 +784622521 +1425887887 +977467671 +857560409 +1203420872 +1996100296 +1751430202 +3955412768 +994929566 +448280256 +3651428453 +1706720724 +1379320474 +2007612009 +2716627585 +1707074755 +3915054475 +1045144197 +3053365082 +2062293974 +305998420 +521309232 +2124841537 +2674752910 +712372371 +4204061649 +2440572294 +1663370840 +734903282 +2869270045 +3518856465 +4273451110 +688741272 +485823918 +3848139315 +814023534 +1295395799 +885003217 +3643544719 +693171594 +2336715241 +3158707444 +4095767649 +1631813760 +4068639196 +1941175978 +1547403562 +1895738171 +161433143 +2485769320 +788059744 +2355743923 +1169895983 +1613445703 +2105910851 +447186637 +919465668 +728935648 +750689811 +2558998155 +672160152 +1498773446 +2285036385 +2114478828 +906833591 +609857683 +2312746595 +548141365 +3076179902 +4246972234 +1475553853 +2462570845 +2526073983 +304081002 +2785118440 +790408460 +1588754232 +4061426115 +1277378832 +1913034588 +1049566297 +3514852069 +574142639 +3260633651 +1046182310 +3578330873 +3863665115 +3928153715 +1061923048 +135518441 +3556936635 +1573219261 +2242169379 +2114440080 +80644091 +2214478867 +2609431494 +1358804334 +165760862 +742720114 +1863306990 +658503848 +108395129 +3405362302 +894894352 +3178370741 +1554455102 +410267539 +936152637 +2547633403 +2172051635 +328357752 +3080424514 +4163609747 +1764347555 +1534792560 +3192623805 +1100348817 +4143301111 +1842759091 +4145060172 +4057566055 +2199825757 +1570725459 +3876653245 +3871304967 +2615111072 +1046305879 +1268577233 +3636365750 +1594219327 +2532938644 +881586560 +3774395072 +2316776771 +371434194 +1180424352 +1749186556 +1512660044 +438159936 +3157259751 +2149064477 +3113703603 +1736386482 +149949058 +4251552349 +2739675462 +3257981084 +3165986370 +754342638 +2794999121 +19200337 +3545720210 +3706542956 +3027566653 +3096804935 +3576271868 +3390335660 +1395782621 +1178501213 +1547223777 +2941182015 +98380427 +1238042083 +2732186389 +3550059521 +902104719 +3761135643 +794005893 +1688569581 +979282923 +1405777197 +3428454205 +881809367 +2163160398 +3245523672 +1603103218 +2704202260 +723132082 +2901006607 +4104653535 +96240378 +42652716 +1200517037 +2312782410 +3366954726 +352055947 +2381916305 +418634594 +2280761413 +2160955171 +2903075936 +1329386516 +810656105 +2410246253 +2629541800 +3175244169 +1553898936 +3653811450 +1645322192 +966018970 +2126342253 +2067416830 +137249616 +3369677541 +4011654759 +3854528999 +2019813472 +2064916101 +4102414632 +700926287 +1729238655 +2655319905 +119580947 +2744053147 +1269105412 +1701838362 +2277574470 +681070664 +581069702 +635738315 +2548933690 +242121416 +4027012052 +1056043033 +384312347 +146720821 +323234854 +800892134 +1113638835 +2421535940 +18658880 +3522063316 +3855064326 +2325649733 +3098046546 +1614062300 +1557081602 +3114549991 +225884024 +498321757 +2037146565 +1968229708 +1358563636 +1225193494 +2406859226 +2746183751 +3286268312 +4240260607 +456829709 +3077668533 +2945447527 +237203984 +4243680628 +1822399814 +3314935451 +798050014 +994235217 +2938417634 +2228184089 +3726925592 +2682917276 +2179271043 +4128720437 +270883690 +2268070867 +1859421686 +376515175 +4259181116 +3999229799 +688499332 +1744296444 +164609105 +471088255 +253063643 +1501592045 +1793218778 +541449043 +2435213570 +14208419 +455672239 +3035270878 +279062406 +2380193995 +3646859069 +1837088255 +1757243487 +3804472498 +3739276013 +4153482970 +2609359853 +719101196 +4232055219 +40174744 +108671107 +3386132161 +4256767082 +518288254 +1307199898 +352795380 +1900679257 +4035401734 +3246403937 +3770481315 +3831413372 +3144634160 +3787145555 +4252504616 +2563960496 +884201685 +3432613876 +1778220662 +733480259 +3597927096 +2330392460 +1857069829 +446670217 +3052257490 +18162375 +3069525876 +2487516475 +3403791010 +2865246929 +2586786937 +2974890905 +2047815088 +4224989729 +1187805299 +3072122164 +3646863045 +2686219094 +1451583301 +3316153962 +3921809218 +717039878 +710700820 +902075230 +1500906032 +712871921 +2486396918 +3998846020 +930743223 +1038345640 +720210556 +1794488428 +1804371466 +1996618775 +2732113432 +2389202135 +2219336058 +3748887024 +3073522069 +1499708227 +3484213013 +3710397365 +3231897567 +2872453784 +2437272421 +3733252495 +2952282211 +3707016511 +2484087590 +1165020815 +3732586533 +2914326434 +2399262258 +4267344495 +2288179759 +1355551105 +275190774 +932400106 +2626510546 +3358920905 +3538103491 +1504233316 +811235675 +276009643 +3955997151 +19983545 +2925358991 +110788709 +1574587864 +2918576566 +2632276898 +3160374555 +1599995634 +1986361634 +718657125 +3044801233 +2005704141 +1517119989 +907697261 +534823957 +1007325342 +3110666933 +654579736 +3719006734 +2856967058 +3681188735 +2734772039 +675930850 +982450765 +2919301989 +1752963779 +451336829 +3366254812 +2183550148 +1744308954 +2300514522 +1786467543 +1329746955 +4168789982 +3016073596 +4112234777 +4234659265 +1195766615 +2217533853 +3004468879 +4208136570 +1923817248 +3986041118 +3040350320 +2353429232 +452017675 +4148485839 +3103313883 +3437107287 +1533489695 +2000868580 +1805534654 +369559290 +3935557490 +3461041033 +4056689078 +1260756644 +1607738268 +1966521460 +2076683748 +2846572356 +1943555879 +1133768996 +594770376 +3584217274 +327655331 +910445407 +1106691309 +147715753 +393543418 +771060726 +3170243535 +1283645068 +1987083799 +42422214 +2316495575 +3103273794 +3503182660 +3971678545 +3821562545 +2468826787 +1575689405 +1880943947 +491343901 +1028030615 +3606968419 +1815334516 +934559862 +201346811 +2925364442 +2535032210 +2684577026 +849124176 +3834107664 +2219097692 +172230563 +2550424063 +2616655367 +1204017269 +3924509583 +2459257762 +3506907449 +83412101 +1213473227 +62069705 +4140002539 +758222060 +1802200944 +4127275316 +168078748 +1367172824 +3229765966 +3548602319 +3161880487 +3658100821 +3328289031 +12428146 +1181337420 +3483311151 +2849776980 +2022385893 +4073555640 +3811154122 +86111434 +3413711375 +3025369929 +3274121567 +3295389925 +543264259 +2658220706 +2100531243 +153161498 +2998634205 +2567728314 +1479988761 +2225804408 +1687299575 +4036750814 +3589425982 +2836112251 +1716719210 +2172019115 +2350772106 +4082527924 +3351601207 +1144339066 +3915972654 +43677040 +128584907 +3198885474 +2049144513 +2918986309 +3540255481 +1236021912 +1562741564 +1567873543 +4096503314 +3705372188 +2577470487 +1177585846 +2303477841 +1147071691 +2391941774 +4028515432 +4065535079 +2583642951 +137192021 +1927228050 +2766227787 +805351294 +2437235296 +4080042115 +3249408284 +782638505 +3845819339 +1983330740 +3282030749 +3319773648 +3736999876 +847551693 +2880828544 +3990939909 +2376424608 +3558519624 +136024549 +3278583844 +2762688829 +4219078139 +3072924194 +692598667 +384003331 +3163216994 +4250335979 +1050907845 +3668273428 +4284545175 +53358827 +650253891 +1151499313 +1468027639 +154584792 +2405751323 +1623439674 +1871951295 +154769593 +2315767181 +1651880503 +2922573984 +48113999 +1632123974 +1961350997 +2471413878 +760692234 +4034335392 +2570688071 +3833410113 +508807148 +3038711427 +2636318446 +386806387 +3390790295 +2782907078 +2447353028 +1456887012 +2811597433 +212881614 +804809160 +3334329333 +1230287783 +1457291885 +1461924287 +4241223388 +44457849 +468720729 +1708698244 +2469203110 +4166298897 +1816329845 +2351564618 +498356396 +307051041 +2823108653 +500390192 +2106885387 +628884507 +2436753563 +425961169 +1081973821 +3782774728 +4195311156 +3043869666 +784024596 +3230991329 +719488898 +2612700779 +4076451778 +1095350154 +279932687 +1534403755 +3944963892 +1406539870 +369435038 +1257607663 +2268806218 +966755660 +900847547 +523346079 +4262324233 +3259257900 +4214819024 +1493742227 +1233831499 +3884615265 +73416695 +2853873585 +1615175371 +2488905718 +2808973797 +972620036 +503038417 +1939620414 +2868162624 +1026391558 +3270471503 +2132348815 +2588150181 +2251185660 +1621676585 +538659267 +2543864103 +1681701711 +611070410 +4288409520 +3883978380 +1722124485 +211809237 +90504501 +3160069575 +673089801 +1287557598 +1881886356 +3992867063 +2795615641 +2391453641 +90395094 +2044532892 +2563643652 +66993898 +281045970 +2838729401 +1013180974 +3693209515 +1008614051 +1421058744 +4066550625 +268842916 +423735394 +4287524086 +197649468 +1490822546 +3036512475 +1698921535 +3719116118 +2059608618 +3998240135 +2449297257 +2187695348 +4062400468 +591577212 +2303173179 +3713832049 +3385098423 +3228933988 +2247508963 +395746164 +1133045056 +1654163076 +941049078 +1002654406 +3389346210 +214685987 +2897334861 +2279105652 +1096157571 +23167349 +637150742 +1734892250 +1826235216 +223778147 +545013551 +1012972564 +4174034546 +4263333947 +3566346661 +419469625 +3253468378 +2014561577 +1684087087 +1355736393 +1978048357 +1373824448 +1132362566 +677196679 +3039814223 +3789560019 +826232837 +4187578686 +4054727366 +493719327 +876885437 +412335866 +1393011217 +3556358700 +2951538787 +1171878633 +212431878 +4221829516 +3850474833 +2633523891 +14527508 +647802013 +3797070994 +3478895932 +1957426232 +1253475796 +1425135863 +3845350651 diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..9a35a0a --- /dev/null +++ b/src/main.rs @@ -0,0 +1,189 @@ +use std::fs::File; +use std::io::{self, BufRead, BufReader}; + +#[derive(Clone, Debug)] +struct Point { + value: u32, + cluster_id: Option, + z_score: Option, // Added field for Z-score +} + +impl Point { + fn new(value: u32) -> Self { + Point { + value, + cluster_id: None, + z_score: None, // Initialize Z-score as None + } + } +} + +fn load_dataset(filename: &str) -> io::Result> { + let file = File::open(filename)?; + let reader = BufReader::new(file); + let mut dataset = Vec::new(); + + for line in reader.lines() { + let value: u32 = line?.trim().parse().unwrap(); + dataset.push(Point::new(value)); + } + + dataset.sort_by_key(|p| p.value); + Ok(dataset) +} + +fn calculate_mean_distance(dataset: &[Point]) -> f32 { + if dataset.len() < 2 { return 0.0; } + let total_distance: f32 = dataset.windows(2) + .map(|w| distance(&w[0], &w[1]) as f32) + .sum(); + total_distance / (dataset.len() - 1) as f32 +} + +fn distance(p1: &Point, p2: &Point) -> u32 { + if p1.value > p2.value { + p1.value.wrapping_sub(p2.value) + } else { + p2.value.wrapping_sub(p1.value) + } +} + +fn mean(values: &[f32]) -> f32 { + values.iter().sum::() / values.len() as f32 +} + +fn std_dev(values: &[f32], mean: f32) -> f32 { + let variance = values.iter().map(|&v| (v - mean).powi(2)).sum::() / values.len() as f32; + variance.sqrt() +} + +fn mark_repellers(dataset: &mut [Point], mean_distance: f32, std_dev_distance: f32) { + let dataset_len = dataset.len(); + for i in 0..dataset_len { + // Temporarily take out the point to avoid borrowing issues + let point = std::mem::replace(&mut dataset[i], Point::new(0)); + let distances: Vec = (0..dataset_len) + .filter(|&j| j != i) // Ensure we're not comparing the point to itself + .map(|j| distance(&point, &dataset[j]) as f32) + .collect(); + // Put the point back + dataset[i] = point; + + if let Some(&min_distance) = distances.iter().min_by(|a, b| a.partial_cmp(b).unwrap()) { + let z_score = (min_distance - mean_distance) / std_dev_distance; + if z_score.abs() > 1.0 { // Arbitrary Z-score threshold for repellers + dataset[i].z_score = Some(-z_score); + } + } + } +} + + +fn expand_cluster(dataset: &mut [Point], core_index: usize, cluster_id: usize, max_distance: f32) { + let mut indices_to_visit = vec![core_index]; + while let Some(current_index) = indices_to_visit.pop() { + if dataset[current_index].cluster_id.is_none() { + dataset[current_index].cluster_id = Some(cluster_id); + + let new_neighbors: Vec = dataset.iter().enumerate() + .filter(|&(idx, other_point)| { + other_point.cluster_id.is_none() && + distance(&dataset[current_index], other_point) as f32 <= max_distance + }) + .map(|(idx, _)| idx) + .filter(|&idx| !indices_to_visit.contains(&idx)) + .collect(); + + indices_to_visit.extend(new_neighbors); + } + } +} + +fn dbscan(dataset: &mut [Point], min_cluster_size: usize, factor: f32) { + let mean_distance = calculate_mean_distance(dataset); + let distances: Vec = dataset.windows(2) + .map(|w| distance(&w[0], &w[1]) as f32) + .collect(); + let mean_val = mean(&distances); + let std_dev_distance = std_dev(&distances, mean_val); + let max_distance = mean_distance * factor; + + mark_repellers(dataset, mean_distance, std_dev_distance); + + let mut cluster_id = 0; + for idx in 0..dataset.len() { + if dataset[idx].cluster_id.is_none() && dataset[idx].z_score.is_none() { + let mut neighbors = Vec::new(); + for (n_idx, other_point) in dataset.iter().enumerate() { + if distance(&dataset[idx], other_point) as f32 <= max_distance { + neighbors.push(n_idx); + } + } + + if neighbors.len() >= min_cluster_size { + cluster_id += 1; + for &n_idx in &neighbors { + dataset[n_idx].cluster_id = Some(cluster_id); + } + expand_cluster(dataset, idx, cluster_id, max_distance); + } + } + } +} + +fn calculate_centroids_z_scores(dataset: &[Point]) -> Vec<(usize, f32)> { + let mean_value = mean(&dataset.iter().map(|p| p.value as f32).collect::>()); + let std_dev_value = std_dev(&dataset.iter().map(|p| p.value as f32).collect::>(), mean_value); + + let mut centroids_z_scores: Vec<(usize, f32)> = Vec::new(); + + let max_cluster_id = dataset.iter().filter_map(|p| p.cluster_id).max().unwrap_or(0); + for cluster_id in 1..=max_cluster_id { + let cluster_points: Vec<&Point> = dataset.iter().filter(|p| p.cluster_id == Some(cluster_id)).collect(); + if cluster_points.is_empty() { + continue; + } + + let centroid_value = cluster_points.iter().map(|p| p.value as f32).sum::() / cluster_points.len() as f32; + let z_score = (centroid_value - mean_value) / std_dev_value; + + centroids_z_scores.push((cluster_id, z_score)); + } + + centroids_z_scores +} + +fn main() -> io::Result<()> { + let filename = "random_values.txt"; + let mut dataset = load_dataset(filename)?; + + let min_cluster_size = 7; // Adjust as needed + let factor = 0.6; // Adjust as needed + + dbscan(&mut dataset, min_cluster_size, factor); + + // Calculate Z-scores for centroids of dense clusters + let centroids_z_scores = calculate_centroids_z_scores(&dataset); + + // Iterate through the dataset to print repellers + for point in &dataset { + if let Some(z_score) = point.z_score { + if z_score < 0.0 { // Assuming negative Z-scores indicate repellers + println!("Repeller: {}, Z-Score: {}", point.value, z_score); + } + } + } + + // Print information for dense cluster centroids + for (cluster_id, z_score) in centroids_z_scores { + let cluster_points: Vec<&Point> = dataset.iter().filter(|p| p.cluster_id == Some(cluster_id)).collect(); + if !cluster_points.is_empty() { + // Find the value closest to the centroid + let centroid_value = cluster_points.iter().map(|p| p.value as f32).sum::() / cluster_points.len() as f32; + let closest_point = cluster_points.iter().min_by_key(|&&p| ((p.value as f32 - centroid_value).abs() * 1000.0) as u32).unwrap(); + println!("Attractor: {}, Z-Score: {}", closest_point.value, z_score); + } + } + + Ok(()) +}