diff --git a/.idea/artifacts/SMA_SEIR_jar.xml b/.idea/artifacts/SMA_SEIR_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..9c200f562b02db76b7e257405c20e8b73e1ebfef --- /dev/null +++ b/.idea/artifacts/SMA_SEIR_jar.xml @@ -0,0 +1,15 @@ +<component name="ArtifactManager"> + <artifact build-on-make="true" name="SMA-SEIR:jar"> + <output-path>$PROJECT_DIR$/out/artifacts/SMA_SEIR_jar</output-path> + <root id="root"> + <element id="archive" name="SMA-SEIR.jar"> + <element id="module-output" name="SMA-SEIR" /> + </element> + <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.2" /> + <element id="library" level="project" name="Maven: org.yaml:snakeyaml:1.30" /> + <element id="library" level="project" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.2" /> + <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.2" /> + <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.2.2" /> + </root> + </artifact> +</component> \ No newline at end of file diff --git a/output.csv b/output.csv index 06805155d23bf164ed27149663c06ebc9d165217..ce1f2685189b092600c0ba38c83ec0504d9dc7ca 100644 --- a/output.csv +++ b/output.csv @@ -1,229 +1,2092 @@ SUCEPTIBLE,EXPOSED,RECOVERED,INFECTED +996,3,1,0 +997,3,0,0 +997,3,0,0 996,3,0,1 -995,3,1,1 -994,2,1,3 -993,3,1,3 -993,3,2,2 -990,5,2,3 -990,6,2,2 -990,5,2,3 -988,6,2,4 -987,6,3,4 -985,8,3,4 -983,8,3,6 -981,10,4,5 -977,13,4,6 -973,15,4,8 -973,16,3,8 -966,22,3,9 -958,27,4,11 -955,29,3,13 -950,29,3,18 -945,30,3,22 -939,32,5,24 -937,32,6,25 -933,31,9,27 -930,31,12,27 -926,30,12,32 -914,38,12,36 -910,40,16,34 -906,43,14,37 -903,41,15,41 -899,40,16,45 -896,41,17,46 -895,39,14,52 -891,40,19,50 -885,43,20,52 -881,42,23,54 -875,41,25,59 -864,49,31,56 -847,61,31,61 -839,66,38,57 -835,65,41,59 -830,68,39,63 -824,70,40,66 -816,75,43,66 -810,78,46,66 -806,76,50,68 -806,76,51,67 -792,77,55,76 -789,74,55,82 -784,71,56,89 -776,76,57,91 -767,77,61,95 -762,72,69,97 -757,73,68,102 -751,80,68,101 -742,84,74,100 -740,82,82,96 -735,82,85,98 -737,80,85,98 -725,86,82,107 -715,92,85,108 -705,100,91,104 -696,95,94,115 -693,91,96,120 -691,89,95,125 -687,89,91,133 -668,100,101,131 -658,99,111,132 -654,93,113,140 -647,97,120,136 -637,103,124,136 -629,106,119,146 -630,94,120,156 -624,97,124,155 -612,105,126,157 -612,99,129,160 -610,98,132,160 -601,104,135,160 -595,106,133,166 -584,107,135,174 -579,111,137,173 -566,118,142,174 -556,121,146,177 -555,116,143,186 -543,131,144,182 -535,139,151,175 -526,145,152,177 -512,154,147,187 -503,150,153,194 -488,159,158,195 -477,157,169,197 -471,160,168,201 -466,154,169,211 -452,159,177,212 -436,164,178,222 -418,170,181,231 -404,176,184,236 -401,178,185,236 -393,177,187,243 -376,181,190,253 -361,199,195,245 -354,193,200,253 -347,198,206,249 -327,216,210,247 -319,207,207,267 -307,208,218,267 -306,210,210,274 -287,217,212,284 -275,213,227,285 -273,204,234,289 -274,197,234,295 -265,201,236,298 -258,198,240,304 -255,193,248,304 -255,189,248,308 -251,190,250,309 -240,197,248,315 -231,204,246,319 -219,216,249,316 -206,219,258,317 -207,209,277,307 -190,211,284,315 -189,206,300,305 -185,203,305,307 -174,197,310,319 -174,194,304,328 -176,196,300,328 -170,196,302,332 -174,196,299,331 -166,197,298,339 -157,205,299,339 -147,213,294,346 -135,209,298,358 -137,208,298,357 -129,204,293,374 -113,202,305,380 -116,196,301,387 -113,184,311,392 -101,187,317,395 -104,185,333,378 -105,183,343,369 -106,186,346,362 -110,187,345,358 -106,186,348,360 -93,203,350,354 -86,206,360,348 -85,200,362,353 -91,198,360,351 -94,200,353,353 -89,200,372,339 -101,196,361,342 -97,198,368,337 -97,203,365,335 -92,200,357,351 -90,209,356,345 -76,214,362,348 -81,211,362,346 -72,208,367,353 -79,199,368,354 -77,199,368,356 -77,199,373,351 -77,199,370,354 -83,198,368,351 -74,205,367,354 -79,202,377,342 -91,190,375,344 -94,203,369,334 -86,207,381,326 -89,196,384,331 -92,182,388,338 -85,184,390,341 -93,173,393,341 -90,178,395,337 -93,176,398,333 -94,184,386,336 -97,192,370,341 -99,203,360,338 -92,211,355,342 -82,216,358,344 -79,213,362,346 -76,222,350,352 -71,224,355,350 -77,226,352,345 -83,218,343,356 -73,226,352,349 -74,213,350,363 -67,219,369,345 -87,206,363,344 -78,223,363,336 -69,237,368,326 -70,232,364,334 -67,229,363,341 -72,223,363,342 -79,219,354,348 -83,222,348,347 -94,225,340,341 -84,218,346,352 -85,218,344,353 -84,224,325,367 -75,236,321,368 -73,223,323,381 -61,220,332,387 -64,207,341,388 -70,205,339,386 -74,204,338,384 -74,198,332,396 -70,194,342,394 -69,191,332,408 -81,184,325,410 -78,193,325,404 -64,191,338,407 -63,186,351,400 -65,176,355,404 -67,183,351,399 -64,179,362,395 -59,187,371,383 -77,186,360,377 -66,191,366,377 -68,187,358,387 -61,185,356,398 -51,193,360,396 -64,182,362,392 -59,188,358,395 -56,190,358,396 -55,187,365,393 -52,185,377,386 -61,171,379,389 -61,174,382,383 +995,4,0,1 +995,4,1,0 +995,4,1,0 +995,4,1,0 +995,4,1,0 +995,4,1,0 +995,4,1,0 +995,4,1,0 +995,4,1,0 +992,6,1,1 +992,6,2,0 +990,7,2,1 +987,9,2,2 +985,9,2,4 +980,14,3,3 +977,14,5,4 +973,18,5,4 +972,20,4,4 +967,22,5,6 +963,26,8,3 +959,27,10,4 +953,33,12,2 +947,33,12,8 +944,34,13,9 +939,32,13,16 +928,40,18,14 +926,36,21,17 +918,44,26,12 +911,48,30,11 +905,50,34,11 +906,52,33,9 +907,46,35,12 +898,50,36,16 +884,58,37,21 +875,63,40,22 +872,58,44,26 +860,62,46,32 +853,62,56,29 +842,69,59,30 +837,72,57,34 +832,68,64,36 +823,76,73,28 +823,72,77,28 +815,74,86,25 +812,74,90,24 +805,78,96,21 +807,71,97,25 +806,71,103,20 +799,69,106,26 +795,72,107,26 +790,74,108,28 +792,74,112,22 +788,77,112,23 +782,84,116,18 +781,85,113,21 +783,80,112,25 +784,78,116,22 +785,77,116,22 +780,77,117,26 +772,81,120,27 +766,82,122,30 +767,80,133,20 +765,77,133,25 +763,77,134,26 +760,82,132,26 +752,88,129,31 +746,92,132,30 +737,98,136,29 +736,95,138,31 +736,95,142,27 +730,100,142,28 +725,103,145,27 +717,106,145,32 +716,103,151,30 +712,109,149,30 +713,106,151,30 +706,103,156,35 +695,99,166,40 +689,103,166,42 +686,107,168,39 +675,114,168,43 +669,115,167,49 +658,122,169,51 +649,119,182,50 +632,128,198,42 +628,127,200,45 +630,132,198,40 +627,129,201,43 +619,130,206,45 +613,133,208,46 +602,137,206,55 +598,141,215,46 +601,139,221,39 +606,135,214,45 +600,133,221,46 +600,137,223,40 +591,141,223,45 +583,151,230,36 +572,156,233,39 +573,153,236,38 +572,151,236,41 +567,152,241,40 +562,158,245,35 +560,154,242,44 +560,150,242,48 +557,151,240,52 +548,160,240,52 +541,154,244,61 +526,167,251,56 +510,177,258,55 +509,165,269,57 +504,169,263,64 +499,174,265,62 +487,169,274,70 +481,173,283,63 +477,180,278,65 +471,183,285,61 +471,176,293,60 +468,173,291,68 +463,175,292,70 +473,181,288,58 +471,182,295,52 +467,186,298,49 +477,182,289,52 +467,182,293,58 +461,188,292,59 +460,185,286,69 +464,176,282,78 +465,172,286,77 +450,182,303,65 +447,180,306,67 +435,193,314,58 +432,191,312,65 +425,191,316,68 +423,194,318,65 +422,192,324,62 +426,182,328,64 +427,184,332,57 +422,183,332,63 +426,177,330,67 +413,189,332,66 +418,184,340,58 +412,180,345,63 +407,187,341,65 +395,198,350,57 +397,194,353,56 +395,183,353,69 +388,192,359,61 +394,201,351,54 +384,199,347,70 +367,214,348,71 +357,216,359,68 +351,216,363,70 +351,207,380,62 +358,190,376,76 +345,201,378,76 +339,200,389,72 +346,204,373,77 +345,195,374,86 +340,198,388,74 +339,199,390,72 +329,203,389,79 +313,222,397,68 +305,218,400,77 +303,225,396,76 +304,218,394,84 +297,213,410,80 +298,213,407,82 +301,210,408,81 +297,214,421,68 +294,205,427,74 +300,210,416,74 +292,219,417,72 +297,209,416,78 +311,208,421,60 +310,205,420,65 +300,214,429,57 +302,199,424,75 +309,193,422,76 +309,190,435,66 +309,190,446,55 +309,180,444,67 +304,179,449,68 +307,178,445,70 +310,170,448,72 +307,185,440,68 +319,184,440,57 +327,178,437,58 +330,176,437,57 +335,180,428,57 +345,174,414,67 +340,174,413,73 +334,178,414,74 +345,168,417,70 +352,164,411,73 +350,171,417,62 +354,173,417,56 +356,174,409,61 +347,184,409,60 +352,179,404,65 +348,175,413,64 +360,177,399,64 +355,188,398,59 +354,189,394,63 +349,197,398,56 +352,193,405,50 +363,195,392,50 +359,200,386,55 +347,217,387,49 +346,214,388,52 +350,211,388,51 +346,203,384,67 +346,198,391,65 +348,202,386,64 +338,206,386,70 +342,207,385,66 +338,213,378,71 +335,212,383,70 +343,206,374,77 +322,228,383,67 +315,229,383,73 +306,233,393,68 +298,235,398,69 +296,228,408,68 +303,215,414,68 +286,227,418,69 +288,223,415,74 +288,217,423,72 +290,222,422,66 +290,217,422,71 +294,216,427,63 +300,205,423,72 +292,218,431,59 +304,207,428,61 +311,200,419,70 +314,199,417,70 +317,193,410,80 +317,187,417,79 +311,191,424,74 +311,194,424,71 +316,191,421,72 +334,185,412,69 +344,185,405,66 +348,187,401,64 +351,183,407,59 +346,198,401,55 +356,194,394,56 +357,199,385,59 +354,198,383,65 +358,196,379,67 +355,199,383,63 +348,204,384,64 +349,207,383,61 +353,204,391,52 +355,197,385,63 +357,198,379,66 +348,200,374,78 +341,204,378,77 +334,207,383,76 +329,192,402,77 +340,191,391,78 +339,186,396,79 +345,182,396,77 +337,188,395,80 +334,187,393,86 +321,208,396,75 +324,201,388,87 +315,208,388,89 +312,213,394,81 +301,222,403,74 +301,220,413,66 +303,211,415,71 +309,197,415,79 +317,192,432,59 +328,186,418,68 +328,184,424,64 +336,181,424,59 +335,182,415,68 +334,186,422,58 +347,177,413,63 +343,178,413,66 +352,174,408,66 +348,179,407,66 +350,180,405,65 +353,176,405,66 +346,176,410,68 +346,179,412,63 +348,179,414,59 +346,180,412,62 +340,185,408,67 +349,180,408,63 +356,182,402,60 +361,185,402,52 +370,178,397,55 +364,175,397,64 +354,186,400,60 +355,193,400,52 +360,192,396,52 +360,188,396,56 +350,194,397,59 +357,194,394,55 +354,190,394,62 +354,191,397,58 +358,193,392,57 +361,193,392,54 +357,187,390,66 +348,192,397,63 +346,198,398,58 +346,199,388,67 +349,191,393,67 +354,195,385,66 +351,195,387,67 +348,194,396,62 +350,195,395,60 +335,202,391,72 +340,199,400,61 +329,205,406,60 +325,203,404,68 +322,213,399,66 +321,213,389,77 +312,218,396,74 +310,213,404,73 +308,217,405,70 +301,220,399,80 +289,226,402,83 +294,225,402,79 +284,230,410,76 +278,230,411,81 +265,237,417,81 +253,234,416,97 +251,235,418,96 +258,227,430,85 +253,237,434,76 +261,230,435,74 +265,232,430,73 +269,229,434,68 +271,221,443,65 +279,206,442,73 +277,200,439,84 +275,199,442,84 +281,189,448,82 +285,190,454,71 +303,186,444,67 +288,200,456,56 +303,189,450,58 +299,195,449,57 +306,198,451,45 +320,188,443,49 +319,193,436,52 +327,187,428,58 +330,187,429,54 +335,189,426,50 +341,184,431,44 +354,180,419,47 +362,173,411,54 +364,178,410,48 +357,181,409,53 +356,178,408,58 +364,179,393,64 +373,171,396,60 +369,173,387,71 +371,179,388,62 +373,180,387,60 +378,181,374,67 +374,190,374,62 +375,194,370,61 +377,189,376,58 +380,199,367,54 +379,195,373,53 +365,203,367,65 +359,209,371,61 +347,217,369,67 +335,218,376,71 +329,222,381,68 +333,214,384,69 +334,219,379,68 +331,217,377,75 +320,209,392,79 +312,217,393,78 +306,223,393,78 +307,227,387,79 +299,227,400,74 +295,216,406,83 +298,215,403,84 +301,220,400,79 +284,232,412,72 +272,241,419,68 +281,227,422,70 +291,223,411,75 +293,229,404,74 +287,226,402,85 +284,230,401,85 +284,222,409,85 +274,219,408,99 +259,230,422,89 +270,224,425,81 +278,218,420,84 +273,225,418,84 +276,226,422,76 +272,224,427,77 +272,218,430,80 +285,219,428,68 +306,206,425,63 +321,197,418,64 +312,199,418,71 +321,197,421,61 +329,194,425,52 +336,199,411,54 +334,199,409,58 +323,207,414,56 +320,204,409,67 +324,196,409,71 +319,206,400,75 +313,208,396,83 +312,207,407,74 +303,214,405,78 +299,215,396,90 +295,212,395,98 +291,219,401,89 +285,226,404,85 +279,218,414,89 +273,226,419,82 +272,224,427,77 +264,215,435,86 +283,206,433,78 +272,211,444,73 +284,205,441,70 +277,201,442,80 +293,193,442,72 +286,196,447,71 +289,199,447,65 +298,195,445,62 +304,195,440,61 +304,190,449,57 +320,187,442,51 +311,185,443,61 +316,187,435,62 +313,190,430,67 +313,184,436,67 +320,183,436,61 +313,181,430,76 +302,186,436,76 +303,181,445,71 +309,172,448,71 +314,174,445,67 +324,175,438,63 +327,177,440,56 +335,170,435,60 +344,180,424,52 +348,169,427,56 +356,169,421,54 +358,175,411,56 +361,181,398,60 +374,185,384,57 +370,188,385,57 +371,185,384,60 +368,191,381,60 +363,191,386,60 +362,186,385,67 +362,188,387,63 +362,195,382,61 +359,203,380,58 +361,193,381,65 +358,192,380,70 +350,195,379,76 +344,190,392,74 +338,198,398,66 +340,209,389,62 +332,201,398,69 +335,196,395,74 +339,192,392,77 +337,196,399,68 +340,201,403,56 +343,195,405,57 +357,180,393,70 +359,179,399,63 +358,182,402,58 +366,188,392,54 +369,182,390,59 +358,191,393,58 +342,206,400,52 +345,206,396,53 +351,198,395,56 +345,205,388,62 +336,214,389,61 +345,208,384,63 +348,207,386,59 +335,209,387,69 +331,217,391,61 +326,211,390,73 +323,210,396,71 +321,212,408,59 +329,210,406,55 +330,202,405,63 +322,207,411,60 +324,204,404,68 +323,195,414,68 +324,190,421,65 +333,198,408,61 +327,200,411,62 +337,194,414,55 +344,194,412,50 +341,201,414,44 +356,200,395,49 +367,193,386,54 +366,196,386,52 +367,188,382,63 +364,197,384,55 +369,183,380,68 +368,196,391,45 +370,189,385,56 +373,199,371,57 +380,194,377,49 +383,179,378,60 +381,184,374,61 +371,189,365,75 +364,195,365,76 +354,209,369,68 +341,217,372,70 +327,215,379,79 +317,226,383,74 +317,230,381,72 +318,220,381,81 +318,221,384,77 +323,222,379,76 +312,232,380,76 +299,232,384,85 +286,240,393,81 +283,238,398,81 +284,237,406,73 +278,242,419,61 +284,228,414,74 +280,233,409,78 +280,241,402,77 +266,245,413,76 +256,252,419,73 +255,246,421,78 +256,235,429,80 +262,231,431,76 +265,223,434,78 +261,218,443,78 +264,218,450,68 +267,218,456,59 +271,207,446,76 +272,205,451,72 +276,201,446,77 +285,200,435,80 +287,199,437,77 +284,200,442,74 +285,205,434,76 +264,209,453,74 +268,212,444,76 +274,209,449,68 +282,212,435,71 +286,213,425,76 +284,211,430,75 +288,199,434,79 +292,198,426,84 +293,205,422,80 +290,209,428,73 +292,212,427,69 +312,197,419,72 +307,199,420,74 +309,193,416,82 +307,205,414,74 +308,205,408,79 +301,207,406,86 +315,200,409,76 +308,196,411,85 +305,194,421,80 +308,198,427,67 +318,188,426,68 +307,196,426,71 +313,192,422,73 +312,196,423,69 +317,193,420,70 +325,199,414,62 +325,196,414,65 +321,194,415,70 +319,195,418,68 +313,194,425,68 +319,194,419,68 +307,204,412,77 +302,205,412,81 +305,205,418,72 +309,202,420,69 +301,202,432,65 +317,198,419,66 +323,199,415,63 +325,205,410,60 +323,213,401,63 +318,216,404,62 +320,214,399,67 +312,219,407,62 +316,214,399,71 +315,214,398,73 +308,219,402,71 +297,223,407,73 +298,223,401,78 +300,214,402,84 +294,217,408,81 +289,220,413,78 +294,212,411,83 +298,203,415,84 +298,203,423,76 +303,195,420,82 +290,190,436,84 +293,194,436,77 +292,198,433,77 +290,200,447,63 +295,194,446,65 +300,195,444,61 +289,191,446,74 +303,182,446,69 +303,196,442,59 +317,181,431,71 +318,184,435,63 +326,191,427,56 +325,183,428,64 +325,185,430,60 +331,187,429,53 +330,195,415,60 +334,197,405,64 +325,199,409,67 +320,206,404,70 +315,203,415,67 +309,200,425,66 +314,201,414,71 +315,197,416,72 +328,189,417,66 +330,189,415,66 +327,185,421,67 +329,185,423,63 +331,182,426,61 +333,179,427,61 +339,182,417,62 +344,171,414,71 +357,170,405,68 +359,173,400,68 +363,178,396,63 +359,183,405,53 +369,183,400,48 +369,185,388,58 +364,193,380,63 +361,192,377,70 +350,194,388,68 +346,199,396,59 +347,192,402,59 +344,202,404,50 +339,205,402,54 +338,206,407,49 +341,213,392,54 +341,214,391,54 +342,209,386,63 +338,210,383,69 +334,213,389,64 +345,205,387,63 +332,216,394,58 +331,219,386,64 +331,216,381,72 +339,210,381,70 +321,225,388,66 +322,221,380,77 +330,213,381,76 +323,218,393,66 +320,219,394,67 +328,205,393,74 +318,219,395,68 +318,217,399,66 +319,214,394,73 +315,223,395,67 +318,220,395,67 +316,220,399,65 +318,218,387,77 +302,226,395,77 +298,221,399,82 +290,219,408,83 +288,218,408,86 +293,219,405,83 +294,227,410,69 +283,238,413,66 +282,225,419,74 +285,213,421,81 +295,205,422,78 +291,209,430,70 +282,211,437,70 +290,201,433,76 +289,201,445,65 +284,206,447,63 +294,200,444,62 +286,198,448,68 +288,187,455,70 +287,191,460,62 +293,194,449,64 +294,196,445,65 +290,198,450,62 +292,198,448,62 +285,202,451,62 +295,195,448,62 +290,192,450,68 +287,193,456,64 +295,195,442,68 +293,202,440,65 +296,201,446,57 +303,198,438,61 +313,195,425,67 +319,191,421,69 +313,194,415,78 +314,197,418,71 +315,205,409,71 +311,201,417,71 +307,195,422,76 +301,199,428,72 +315,186,418,81 +311,194,420,75 +299,198,428,75 +305,208,423,64 +314,203,419,64 +321,213,400,66 +321,209,402,68 +316,213,406,65 +327,211,407,55 +333,207,407,53 +351,207,391,51 +349,209,380,62 +345,216,378,61 +335,224,383,58 +323,243,377,57 +332,239,366,63 +321,239,361,79 +304,249,365,82 +298,255,371,76 +294,249,386,71 +287,240,391,82 +289,237,402,72 +283,239,405,73 +281,249,399,71 +286,245,393,76 +291,246,391,72 +290,242,390,78 +295,237,393,75 +286,240,399,75 +289,234,402,75 +289,237,405,69 +302,232,395,71 +292,239,393,76 +286,235,402,77 +277,243,403,77 +272,251,407,70 +271,237,404,88 +268,233,416,83 +264,232,427,77 +266,236,432,66 +263,234,438,65 +263,238,429,70 +261,237,428,74 +260,234,433,73 +250,224,437,89 +244,227,458,71 +244,226,452,78 +255,217,448,80 +251,223,442,84 +247,224,449,80 +261,215,450,74 +262,215,450,73 +273,202,445,80 +265,208,456,71 +260,218,457,65 +266,218,455,61 +286,216,444,54 +283,209,447,61 +291,207,446,56 +295,200,440,65 +296,208,437,59 +308,203,426,63 +308,202,434,56 +313,201,418,68 +318,201,414,67 +316,201,414,69 +319,201,407,73 +329,199,402,70 +325,203,403,69 +322,204,399,75 +328,207,394,71 +332,199,402,67 +324,204,408,64 +317,214,406,63 +311,219,402,68 +303,226,401,70 +295,231,406,68 +297,222,407,74 +297,212,408,83 +299,200,408,93 +293,196,418,93 +290,198,415,97 +291,195,420,94 +282,207,433,78 +283,209,428,80 +274,216,433,77 +280,209,434,77 +278,211,431,80 +280,209,432,79 +270,220,433,77 +286,202,437,75 +288,207,433,72 +300,207,426,67 +305,202,426,67 +302,202,434,62 +307,202,432,59 +294,212,427,67 +295,201,434,70 +306,193,427,74 +309,193,423,75 +307,191,425,77 +305,192,427,76 +308,191,425,76 +306,196,428,70 +303,202,425,70 +304,192,433,71 +301,196,428,75 +308,186,430,76 +306,193,441,60 +297,207,439,57 +293,214,429,64 +298,210,436,56 +304,203,430,63 +305,196,438,61 +320,186,435,59 +332,182,433,53 +336,179,427,58 +339,181,421,59 +346,186,415,53 +358,178,406,58 +358,182,407,53 +373,180,394,53 +368,184,389,59 +359,183,394,64 +353,196,393,58 +360,190,389,61 +354,195,396,55 +349,202,389,60 +342,203,387,68 +339,201,391,69 +339,201,398,62 +336,207,396,61 +336,210,393,61 +338,207,387,68 +327,217,386,70 +335,201,381,83 +333,199,388,80 +336,193,393,78 +333,194,394,79 +339,191,396,74 +326,195,401,78 +318,196,414,72 +326,197,407,70 +326,195,411,68 +329,198,406,67 +324,206,403,67 +320,207,402,71 +330,197,397,76 +317,207,392,84 +312,210,397,81 +309,218,400,73 +308,222,406,64 +311,217,410,62 +311,218,406,65 +312,206,407,75 +309,212,408,71 +305,210,416,69 +309,198,417,76 +299,197,421,83 +285,206,427,82 +276,215,435,74 +278,212,433,77 +287,209,432,72 +289,208,423,80 +288,214,432,66 +299,202,436,63 +293,205,432,70 +309,198,428,65 +317,193,427,63 +311,207,417,65 +305,213,423,59 +299,218,427,56 +291,218,427,64 +282,223,423,72 +289,215,425,71 +296,218,422,64 +295,225,424,56 +295,221,421,63 +296,226,415,63 +304,219,403,74 +290,219,409,82 +295,220,418,67 +295,219,414,72 +295,218,420,67 +298,215,418,69 +290,217,425,68 +287,226,414,73 +296,217,409,78 +288,222,414,76 +281,214,418,87 +289,204,424,83 +292,195,424,89 +286,203,433,78 +278,202,444,76 +274,210,444,72 +267,210,450,73 +263,210,456,71 +280,208,438,74 +285,208,445,62 +285,208,445,62 +291,202,445,62 +290,205,440,65 +290,197,434,79 +287,195,434,84 +290,190,443,77 +289,195,448,68 +290,204,440,66 +302,204,431,63 +308,196,428,68 +311,194,424,71 +306,197,420,77 +319,189,423,69 +324,189,410,77 +321,191,413,75 +323,181,409,87 +318,188,419,75 +333,192,411,64 +323,203,407,67 +317,200,413,70 +314,199,412,75 +318,200,408,74 +322,198,412,68 +323,198,411,68 +337,198,401,64 +329,198,404,69 +333,195,407,65 +335,184,415,66 +339,182,412,67 +335,188,407,70 +336,193,408,63 +339,192,410,59 +341,180,408,71 +345,178,406,71 +357,174,399,70 +359,173,400,68 +365,175,395,65 +366,173,398,63 +373,174,388,65 +367,178,390,65 +370,177,384,69 +357,181,390,72 +358,179,401,62 +353,180,405,62 +357,178,403,62 +369,166,403,62 +376,168,405,51 +378,166,402,54 +378,172,392,58 +375,176,390,59 +365,184,386,65 +364,189,375,72 +360,193,382,65 +344,198,388,70 +342,198,389,71 +340,201,393,66 +342,193,393,72 +347,187,399,67 +348,186,407,59 +351,190,395,64 +340,183,405,72 +335,195,409,61 +346,185,403,66 +339,188,405,68 +335,188,400,77 +336,187,407,70 +327,195,409,69 +329,189,409,73 +319,186,420,75 +313,191,427,69 +315,190,423,72 +309,199,426,66 +324,192,417,67 +328,191,417,64 +321,195,418,66 +329,202,410,59 +330,201,396,73 +322,203,399,76 +310,207,407,76 +311,213,406,70 +314,215,407,64 +313,216,406,65 +318,206,409,67 +315,200,414,71 +318,200,406,76 +321,203,409,67 +312,205,419,64 +311,207,422,60 +325,195,417,63 +340,194,407,59 +343,192,396,69 +332,201,404,63 +334,202,395,69 +322,206,394,78 +327,200,392,81 +322,211,392,75 +311,215,405,69 +313,211,411,65 +311,211,408,70 +305,209,415,71 +300,214,415,71 +290,215,421,74 +285,201,427,87 +276,209,429,86 +270,203,437,90 +272,201,438,89 +271,199,436,94 +276,198,448,78 +267,198,455,80 +279,193,446,82 +283,194,450,73 +284,198,446,72 +303,188,435,74 +308,184,434,74 +314,183,436,67 +313,181,442,64 +305,184,442,69 +294,193,445,68 +288,201,447,64 +291,196,443,70 +292,191,434,83 +287,195,431,87 +286,201,436,77 +284,196,438,82 +294,198,435,73 +301,200,428,71 +296,209,435,60 +297,209,428,66 +300,204,425,71 +304,203,422,71 +306,216,422,56 +305,213,419,63 +302,213,414,71 +303,208,421,68 +300,211,412,77 +297,210,421,72 +300,209,415,76 +293,209,418,80 +286,223,418,73 +286,221,416,77 +295,215,408,82 +295,215,412,78 +294,214,427,65 +287,208,434,71 +279,222,436,63 +295,219,426,60 +299,214,424,63 +313,199,413,75 +321,204,408,67 +320,207,410,63 +343,192,405,60 +356,190,395,59 +358,189,396,57 +351,201,392,56 +347,202,399,52 +343,195,395,67 +343,195,383,79 +338,207,386,69 +328,201,393,78 +324,195,402,79 +324,192,414,70 +331,196,408,65 +328,202,406,64 +334,191,407,68 +329,188,410,73 +334,185,405,76 +341,184,407,68 +335,197,400,68 +335,201,405,59 +334,197,402,67 +334,201,398,67 +336,200,401,63 +331,202,401,66 +322,203,404,71 +316,200,411,73 +317,197,412,74 +306,202,424,68 +316,198,425,61 +310,202,423,65 +310,198,423,69 +306,196,421,77 +309,199,422,70 +312,207,419,62 +311,204,413,72 +301,210,415,74 +305,205,424,66 +305,201,422,72 +308,200,423,69 +301,205,419,75 +312,197,408,83 +315,202,407,76 +309,205,410,76 +297,208,421,74 +296,205,429,70 +299,202,430,69 +306,198,425,71 +301,206,430,63 +300,207,433,60 +304,202,422,72 +309,196,423,72 +311,202,428,59 +302,200,439,59 +316,189,431,64 +331,175,419,75 +328,186,413,73 +320,191,419,70 +316,191,424,69 +306,201,424,69 +311,194,417,78 +310,191,429,70 +317,191,429,63 +324,194,423,59 +337,184,415,64 +327,191,414,68 +328,183,414,75 +308,196,425,71 +313,194,423,70 +311,197,428,64 +308,198,427,67 +322,201,415,62 +322,204,409,65 +320,206,408,66 +325,206,397,72 +314,212,411,63 +312,216,413,59 +329,198,404,69 +334,205,389,72 +327,203,399,71 +336,188,400,76 +321,201,404,74 +320,204,407,69 +332,199,407,62 +341,193,397,69 +337,195,395,73 +334,204,395,67 +328,199,401,72 +319,202,404,75 +315,197,414,74 +312,204,423,61 +317,205,411,67 +312,207,413,68 +315,209,403,73 +321,198,403,78 +322,201,403,74 +312,208,408,72 +317,198,412,73 +316,199,410,75 +312,190,412,86 +321,197,401,81 +317,202,409,72 +323,196,413,68 +320,197,412,71 +323,191,419,67 +330,195,421,54 +339,181,418,62 +352,183,412,53 +359,184,402,55 +364,184,391,61 +354,186,392,68 +354,188,399,59 +353,188,396,63 +362,185,389,64 +351,189,394,66 +337,196,394,73 +333,204,395,68 +326,204,405,65 +318,210,412,60 +315,214,406,65 +301,216,406,77 +305,218,410,67 +314,212,397,77 +306,217,403,74 +295,229,404,72 +301,226,403,70 +300,222,404,74 +309,228,395,68 +307,218,401,74 +307,223,401,69 +310,218,400,72 +305,219,394,82 +294,220,414,72 +293,222,423,62 +291,222,423,64 +288,228,427,57 +293,225,419,63 +297,223,420,60 +295,217,419,69 +298,214,430,58 +300,214,429,57 +304,209,425,62 +300,212,431,57 +311,207,427,55 +315,210,432,43 +313,208,423,56 +306,209,428,57 +309,213,418,60 +306,217,418,59 +305,217,408,70 +315,212,410,63 +312,213,417,58 +312,218,419,51 +310,216,414,60 +309,213,418,60 +309,211,410,70 +307,214,417,62 +305,218,413,64 +308,213,401,78 +279,217,419,85 +279,214,428,79 +278,218,431,73 +273,218,434,75 +279,215,436,70 +274,221,434,71 +279,213,422,86 +274,218,430,78 +270,221,434,75 +265,218,440,77 +264,216,444,76 +273,213,436,78 +274,211,434,81 +273,211,435,81 +280,203,448,69 +282,207,437,74 +281,211,432,76 +274,208,438,80 +283,200,439,78 +288,203,432,77 +290,202,429,79 +296,202,430,72 +300,189,433,78 +305,191,434,70 +302,192,434,72 +295,199,431,75 +298,199,425,78 +298,196,428,78 +300,196,428,76 +304,188,427,81 +310,187,413,90 +303,191,420,86 +294,193,432,81 +289,195,436,80 +282,198,440,80 +280,194,443,83 +290,196,430,84 +283,199,437,81 +274,200,436,90 +271,206,441,82 +269,212,441,78 +277,214,435,74 +282,213,426,79 +283,222,431,64 +273,227,437,63 +285,224,421,70 +282,218,421,79 +284,213,426,77 +288,218,426,68 +287,213,421,79 +287,214,417,82 +292,199,413,96 +281,208,422,89 +278,215,426,81 +272,220,432,76 +279,213,434,74 +276,213,433,78 +273,202,433,92 +270,205,429,96 +280,202,431,87 +257,211,448,84 +266,210,451,73 +268,203,450,79 +272,204,450,74 +278,203,446,73 +278,199,448,75 +276,201,447,76 +287,192,452,69 +283,192,462,63 +286,187,454,73 +290,201,445,64 +306,188,444,62 +315,189,432,64 +314,197,426,63 +314,195,426,65 +319,182,429,70 +310,187,434,69 +319,190,420,71 +319,187,423,71 +314,191,421,74 +321,194,417,68 +321,188,415,76 +323,187,416,74 +305,193,425,77 +304,189,427,80 +308,187,437,68 +307,187,437,69 +309,194,433,64 +317,200,418,65 +329,200,405,66 +334,200,401,65 +337,202,401,60 +339,205,400,56 +325,208,400,67 +322,204,403,71 +315,205,414,66 +298,211,426,65 +293,211,420,76 +298,212,427,63 +307,205,420,68 +311,202,421,66 +304,213,416,67 +322,204,408,66 +321,213,404,62 +323,220,399,58 +327,216,392,65 +319,224,395,62 +324,222,398,56 +328,215,397,60 +329,218,395,58 +334,210,393,63 +326,209,392,73 +316,216,397,71 +310,217,402,71 +305,222,410,63 +308,219,403,70 +302,228,395,75 +303,228,397,72 +298,225,401,76 +287,232,402,79 +293,218,416,73 +295,209,421,75 +294,208,428,70 +296,209,424,71 +297,218,424,61 +301,213,418,68 +300,214,412,74 +308,212,416,64 +297,211,422,70 +298,216,419,67 +285,226,421,68 +291,222,416,71 +285,223,421,71 +272,222,431,75 +281,207,435,77 +289,209,428,74 +293,194,437,76 +303,187,440,70 +323,187,419,71 +315,204,418,63 +308,204,426,62 +297,213,431,59 +295,206,435,64 +295,212,429,64 +308,201,424,67 +307,196,424,73 +303,194,427,76 +307,186,436,71 +310,192,440,58 +301,197,441,61 +293,207,445,55 +309,192,440,59 +329,182,431,58 +347,175,426,52 +342,179,427,52 +342,173,423,62 +345,170,413,72 +338,181,412,69 +325,189,416,70 +317,186,420,77 +312,198,429,61 +317,201,418,64 +319,202,415,64 +322,201,404,73 +329,195,407,69 +327,197,404,72 +322,198,401,79 +322,205,403,70 +313,211,399,77 +301,216,404,79 +302,220,406,72 +300,221,406,73 +306,220,402,72 +303,223,411,63 +301,220,404,75 +297,227,406,70 +303,209,413,75 +304,212,411,73 +305,205,419,71 +304,210,415,71 +315,202,416,67 +310,207,420,63 +319,199,419,63 +324,197,420,59 +326,191,423,60 +322,185,421,72 +324,170,425,81 +324,172,438,66 +321,175,445,59 +318,181,445,56 +324,186,441,49 +324,189,439,48 +329,182,438,51 +339,175,427,59 +343,176,423,58 +358,165,422,55 +355,168,425,52 +350,166,418,66 +355,165,411,69 +357,168,406,69 +357,163,414,66 +350,170,418,62 +351,170,423,56 +359,168,416,57 +362,169,415,54 +378,170,402,50 +378,174,395,53 +377,180,379,64 +375,185,370,70 +373,185,367,75 +376,180,378,66 +375,181,383,61 +381,182,380,57 +381,185,379,55 +383,187,371,59 +391,186,367,56 +384,185,373,58 +382,194,370,54 +378,197,364,61 +371,198,367,64 +365,207,369,59 +360,204,369,67 +354,204,362,80 +338,209,374,79 +337,207,377,79 +337,205,388,70 +339,203,386,72 +344,200,389,67 +344,200,388,68 +353,194,386,67 +347,198,391,64 +350,194,389,67 +348,195,389,68 +336,200,392,72 +337,196,398,69 +347,194,397,62 +347,196,400,57 +344,202,399,55 +338,209,398,55 +339,212,397,52 +350,208,387,55 +357,206,377,60 +363,205,374,58 +356,205,369,70 +353,215,370,62 +342,224,370,64 +331,225,367,77 +337,218,377,68 +327,220,379,74 +322,224,386,68 +311,233,391,65 +299,239,393,69 +306,230,389,75 +307,231,395,67 +309,217,399,75 +302,230,404,64 +308,224,404,64 +312,231,402,55 +311,221,407,61 +305,229,408,58 +312,225,405,58 +317,219,401,63 +315,218,404,63 +314,214,408,64 +309,204,411,76 +309,205,417,69 +313,214,407,66 +321,213,397,69 +313,221,398,68 +311,226,393,70 +308,219,391,82 +310,220,390,80 +305,218,395,82 +287,226,407,80 +295,227,413,65 +280,232,417,71 +284,234,411,71 +296,218,408,78 +287,215,414,84 +286,222,414,78 +288,230,414,68 +289,230,414,67 +291,219,418,72 +291,224,422,63 +274,236,416,74 +267,240,417,76 +263,235,432,70 +259,236,436,69 +258,229,437,76 +253,229,438,80 +252,222,443,83 +246,226,449,79 +241,217,458,84 +247,211,462,80 +265,198,460,77 +268,199,458,75 +266,207,455,72 +276,206,452,66 +276,204,450,70 +274,197,448,81 +275,197,446,82 +266,200,464,70 +285,197,453,65 +284,194,458,64 +293,192,455,60 +292,195,443,70 +296,198,441,65 +310,194,431,65 +317,199,419,65 +309,204,418,69 +298,216,426,60 +302,210,419,69 +296,206,424,74 +295,203,433,69 +291,198,431,80 +291,202,438,69 +289,200,441,70 +286,199,442,73 +282,200,441,77 +278,203,448,71 +283,193,446,78 +269,201,453,77 +268,199,455,78 +272,203,445,80 +273,200,447,80 +277,202,445,76 +291,195,447,67 +287,205,451,57 +284,202,453,61 +297,201,439,63 +305,191,439,65 +321,186,433,60 +322,191,423,64 +319,194,418,69 +310,195,428,67 +304,191,435,70 +301,189,440,70 +292,196,447,65 +300,196,440,64 +300,198,433,69 +304,198,436,62 +308,200,432,60 +332,188,418,62 +336,188,412,64 +333,196,413,58 +339,199,400,62 +342,203,396,59 +343,200,400,57 +346,205,400,49 +350,189,391,70 +345,194,399,62 +351,191,397,61 +353,191,390,66 +344,195,388,73 +347,193,382,78 +341,199,382,78 +326,204,391,79 +314,214,390,82 +308,223,398,71 +310,225,400,65 +311,224,407,58 +308,226,402,64 +301,230,401,68 +302,221,410,67 +309,201,412,78 +297,209,420,74 +294,204,425,77 +291,203,436,70 +284,204,437,75 +278,209,445,68 +286,203,437,74 +283,204,434,79 +286,206,433,75 +290,195,435,80 +294,196,432,78 +283,196,444,77 +287,201,445,67 +285,201,444,70 +290,204,446,60 +293,198,444,65 +292,205,441,62 +278,213,436,73 +289,215,429,67 +299,205,431,65 +299,207,418,76 +290,222,420,68 +290,222,413,75 +275,231,423,71 +278,222,421,79 +268,228,425,79 +280,225,433,62 +285,217,431,67 +290,214,428,68 +308,207,419,66 +315,208,417,60 +315,210,423,52 +325,201,414,60 +329,200,409,62 +326,211,397,66 +325,208,403,64 +309,221,411,59 +312,216,410,62 +314,215,411,60 +308,214,418,60 +320,207,407,66 +320,213,403,64 +317,218,402,63 +318,228,394,60 +315,226,392,67 +306,232,392,70 +316,228,385,71 +316,220,383,81 +316,221,386,77 +316,223,390,71 +322,211,392,75 +317,218,393,72 +316,216,395,73 +307,219,409,65 +300,219,414,67 +299,221,408,72 +303,218,412,67 +320,215,400,65 +318,219,395,68 +319,219,395,67 +311,222,404,63 +319,217,402,62 +317,217,391,75 +310,220,394,76 +308,218,395,79 +301,221,399,79 +296,222,395,87 +299,216,402,83 +307,205,406,82 +310,209,409,72 +309,203,410,78 +311,213,402,74 +306,215,409,70 +303,217,410,70 +294,219,414,73 +292,212,419,77 +295,217,415,73 +294,218,425,63 +295,212,423,70 +291,218,423,68 +303,208,415,74 +311,203,410,76 +315,201,396,88 +308,210,405,77 +300,201,411,88 +292,208,417,83 +297,206,417,80 +289,214,424,73 +280,209,433,78 +281,215,441,63 +285,205,440,70 +289,206,437,68 +288,212,422,78 +287,216,422,75 +274,218,426,82 +273,220,428,79 +259,228,434,79 +258,230,434,78 +269,214,431,86 +264,220,437,79 +265,229,434,72 +257,231,440,72 +256,223,442,79 +250,220,446,84 +244,221,449,86 +244,222,443,91 +248,220,440,92 +249,214,453,84 +247,221,447,85 +251,227,447,75 +266,227,441,66 +270,235,437,58 +272,229,424,75 +286,227,414,73 +278,230,416,76 +267,243,426,64 +270,227,432,71 +277,215,427,81 +272,217,432,79 +281,211,433,75 +265,209,444,82 +267,204,449,80 +261,197,450,92 +254,199,459,88 +263,199,449,89 +265,195,462,78 +266,200,463,71 +266,201,461,72 +281,190,460,69 +277,202,463,58 +283,197,461,59 +288,189,457,66 +295,185,457,63 +297,186,459,58 +299,193,453,55 +306,189,453,52 +312,190,444,54 +320,188,437,55 +327,186,434,53 +330,188,427,55 +335,187,427,51 +342,183,426,49 +339,177,421,63 +343,178,420,59 +341,175,426,58 +341,180,422,57 +340,178,425,57 +350,171,422,57 +348,173,423,56 +362,170,417,51 +352,181,416,51 +364,172,410,54 +361,184,403,52 +372,182,397,49 +381,179,386,54 +384,178,382,56 +384,187,384,45 +383,192,372,53 +389,190,368,53 +381,204,358,57 +375,205,361,59 +373,202,361,64 +375,206,361,58 +375,204,361,60 +372,201,363,64 +363,207,364,66 +367,200,361,72 +346,212,362,80 +332,219,370,79 +326,230,361,83 +318,224,374,84 +315,232,373,80 +318,223,375,84 +309,230,380,81 +301,230,395,74 +303,221,396,80 +314,223,391,72 +318,218,389,75 +318,225,390,67 +326,207,399,68 +328,204,400,68 +325,202,412,61 +335,198,399,68 +344,192,396,68 +339,191,401,69 +328,200,404,68 +317,199,414,70 +318,204,415,63 +312,194,424,70 +318,191,428,63 +312,194,431,63 +316,188,435,61 +316,190,445,49 +328,188,434,50 +331,185,429,55 +338,184,417,61 +347,182,412,59 +342,188,413,57 +327,197,419,57 +328,197,404,71 +327,200,407,66 +331,199,406,64 +327,203,406,64 +318,215,408,59 +328,211,404,57 +329,208,400,63 +320,213,406,61 +314,213,409,64 +309,208,411,72 +318,208,402,72 +316,212,407,65 +321,201,407,71 +318,198,411,73 +316,198,416,70 +320,198,410,72 +312,208,411,69 +317,207,408,68 +324,203,404,69 +331,199,393,77 +324,193,410,73 +325,197,408,70 +324,200,418,58 +338,201,410,51 +340,198,399,63 +338,213,386,63 +326,221,386,67 +333,218,385,64 +337,219,391,53 +325,219,391,65 +319,219,391,71 +315,225,396,64 +321,221,385,73 +324,214,387,75 +314,215,400,71 +331,210,384,75 +333,211,377,79 +323,217,387,73 +319,219,386,76 +315,225,386,74 +309,229,379,83 +304,226,388,82 +288,228,397,87 +287,227,394,92 +280,231,400,89 +277,228,407,88 +279,230,404,87 +279,236,414,71 +278,227,418,77 +275,231,415,79 +267,227,422,84 +266,227,433,74 +269,218,437,76 +271,217,440,72 +277,206,446,71 +285,202,446,67 +278,197,455,70 +274,205,454,67 +277,205,448,70 +276,212,444,68 +285,207,439,69 +288,205,441,66 +286,204,437,73 +287,197,437,79 +288,207,439,66 +292,205,439,64 +291,204,437,68 +291,210,434,65 +299,204,438,59 +309,199,433,59 +318,201,425,56 +325,199,414,62 +331,196,411,62 +339,193,409,59 +339,190,405,66 +331,197,415,57 +332,193,413,62 +334,194,401,71 +334,201,402,63 +334,199,400,67 +326,214,391,69 +324,221,386,69 +321,219,394,66 +316,220,405,59 +314,211,408,67 +313,223,399,65 +305,218,407,70 +304,228,405,63 +296,226,405,73 +291,232,409,68 +294,231,408,67 +304,226,396,74 +297,230,396,77 +294,222,405,79 +285,235,408,72 +287,226,408,79 +285,228,412,75 +290,221,407,82 +294,222,413,71 +295,216,421,68 +299,213,419,69 +304,218,405,73 +312,217,397,74 +313,214,396,77 +315,207,402,76 +313,203,399,85 +314,209,397,80 +305,214,400,81 +305,207,406,82 +298,212,409,81 +297,211,409,83 +301,205,404,90 +301,209,407,83 +298,209,408,85 +290,222,413,75 +285,226,416,73 +288,226,406,80 +285,225,414,76 +295,222,413,70 +301,214,411,74 +301,222,412,65 +297,221,423,59 +296,215,421,68 +298,206,418,78 +312,196,417,75 +306,206,408,80 +308,208,417,67 +308,211,422,59 +302,217,418,63 +307,213,417,63 +303,207,417,73 +310,205,410,75 +312,209,415,64 +314,208,415,63 +311,212,417,60 +309,217,418,56 +315,206,410,69 +308,212,417,63 +305,213,413,69 +309,218,401,72 +299,230,405,66 +300,235,398,67 +309,228,407,56 +304,222,413,61 +298,219,410,73 +285,224,416,75 +281,223,425,71 +286,210,424,80 +284,215,419,82 +284,216,423,77 +282,200,436,82 +280,196,436,88 +278,205,444,73 +285,198,452,65 +283,200,452,65 +285,182,456,77 +287,188,454,71 +295,194,458,53 +306,193,447,54 +309,188,441,62 +301,192,446,61 +308,187,442,63 +308,180,441,71 +311,181,435,73 +309,190,434,67 +313,187,425,75 +305,193,432,70 +310,193,437,60 +320,187,432,61 +323,184,430,63 +332,181,430,57 +338,186,422,54 +336,180,418,66 +340,181,421,58 +353,176,419,52 +360,173,407,60 +362,165,399,74 +360,167,399,74 +353,168,407,72 +349,168,411,72 +344,179,414,63 +348,180,410,62 +347,176,416,61 +344,188,412,56 +352,179,407,62 +351,185,398,66 +353,181,400,66 +365,167,401,67 +358,180,402,60 +367,172,400,61 +360,175,397,68 +360,179,391,70 +355,179,400,66 +356,177,401,66 +356,182,406,56 +357,186,402,55 +364,188,387,61 +355,193,390,62 +338,202,403,57 +332,208,406,54 +333,201,404,62 +331,200,408,61 +322,201,415,62 +334,201,405,60 +333,200,401,66 +326,197,398,79 +322,200,405,73 +318,202,413,67 +321,193,414,72 +314,204,420,62 +318,202,415,65 +321,195,415,69 +324,195,407,74 +329,189,407,75 +333,195,402,70 +337,194,404,65 +334,195,403,68 +337,197,402,64 +331,209,393,67 +323,208,402,67 +316,208,409,67 +312,215,412,61 +314,210,417,59 +317,199,415,69 +320,201,405,74 +321,200,409,70 +312,200,412,76 +307,193,417,83 +319,196,418,67 +318,199,422,61 +322,206,418,54 +319,202,432,47 +324,199,421,56 +329,196,417,58 +336,198,411,55 +344,200,405,51 +348,198,402,52 +343,201,403,53 +354,200,394,52 +352,201,393,54 +350,200,385,65 +354,195,385,66 +355,193,392,60 +343,202,398,57 +354,194,390,62 +350,187,396,67 +354,183,398,65 +340,190,403,67 +341,185,411,63 +337,187,412,64 +344,181,411,64 +340,182,412,66 +353,182,394,71 +358,187,379,76 +356,178,386,80 +334,192,396,78 +341,192,390,77 +331,199,401,69 +324,204,401,71 +324,207,410,59 +331,207,406,56 +346,208,391,55 +354,202,384,60 +349,192,392,67 +347,199,389,65 +345,195,394,66 +336,203,392,69 +334,206,398,62 +344,203,394,59 +342,194,400,64 +327,201,406,66 +316,210,410,64 +321,209,407,63 +323,208,406,63 +317,205,416,62 +316,206,410,68 +317,209,402,72 +305,206,413,76 +300,207,413,80 +301,205,418,76 +297,207,422,74 +292,213,420,75 +315,203,406,76 +315,207,401,77 +311,209,394,86 +317,201,400,82 +306,206,415,73 +322,201,408,69 +321,211,404,64 +322,214,404,60 +317,214,406,63 +321,217,392,70 +313,219,407,61 +314,211,407,68 +323,207,403,67 +316,213,409,62 +319,208,401,72 +315,219,397,69 +313,212,395,80 +313,213,394,80 +315,208,404,73 +303,214,412,71 +301,214,404,81 +305,213,399,83 +294,226,401,79 diff --git a/outputToGraph.py b/outputToGraph.py new file mode 100644 index 0000000000000000000000000000000000000000..31ad05c715ac545adc2c842ba89f01f194889245 --- /dev/null +++ b/outputToGraph.py @@ -0,0 +1,33 @@ +import csv +import matplotlib.pyplot as plt + +def readCSV(fileName): + with open(fileName, 'r') as csvfile: + reader = csv.reader(csvfile) + return list(reader) + +def showDiagram(data): + suceptible = [] + exposed = [] + recovred = [] + infected = [] + + for row in data[1:]: + suceptible.append(int(row[0])) + exposed.append(int(row[1])) + recovred.append(int(row[2])) + infected.append(int(row[3])) + + plt.plot(suceptible, label='Suceptible', color='gray') + plt.plot(exposed, label='Exposed', color='yellow') + plt.plot(infected, label='Infected', color='red') + plt.plot(recovred, label='Recovered', color='green') + plt.xlabel('Cycles') + plt.ylabel('Peoples') + plt.legend() + plt.show() + + +data = readCSV("output.csv") + +showDiagram(data) \ No newline at end of file diff --git a/src/main/java/sma/SMA.java b/src/main/java/sma/SMA.java index fdc616ff2eb5099d23e8baff9ae1865728be5884..2a17999e49b3bf687a4980c6d1d609d685ff6a8a 100644 --- a/src/main/java/sma/SMA.java +++ b/src/main/java/sma/SMA.java @@ -110,6 +110,8 @@ public class SMA { cpt++; } } + System.out.println("Simulation done !"); + System.exit(0); } public static void main(String[] args) throws InterruptedException, IOException { diff --git a/src/main/java/sma/agents/RandomWalkingAgent.java b/src/main/java/sma/agents/RandomWalkingAgent.java index ff9b4be0a37db67e20597b2ac101f0d7e2be7307..0921be307026021d173b3ba38b0f683fb5ac4d5c 100644 --- a/src/main/java/sma/agents/RandomWalkingAgent.java +++ b/src/main/java/sma/agents/RandomWalkingAgent.java @@ -48,7 +48,7 @@ public class RandomWalkingAgent implements Agent { boolean isExposed = false; for (Agent neighbor: environment.getNeighbors(position)) { if (neighbor.getState() instanceof InfectedState) { - int roll = r.nextInt(100); + int roll = r.nextInt(100)+1; if (roll <= YamlReader.getParams().getInfectionRate()*100) { isExposed = true; } @@ -60,7 +60,7 @@ public class RandomWalkingAgent implements Agent { @Override public boolean isInfected() { boolean isSick = false; - int roll = r.nextInt(100); + int roll = r.nextInt(100)+1; if (roll <= YamlReader.getParams().getIncubationRate()*100) { isSick = true; } @@ -70,7 +70,7 @@ public class RandomWalkingAgent implements Agent { @Override public boolean isRecovered() { boolean isHealed = false; - int roll = r.nextInt(100); + int roll = r.nextInt(100)+1; if (roll <= YamlReader.getParams().getRecoveryRate()*100) { isHealed = true; } @@ -80,7 +80,7 @@ public class RandomWalkingAgent implements Agent { @Override public boolean hasLostImmunity() { boolean hasLostImmunity = false; - int roll = r.nextInt(100); + int roll = r.nextInt(100)+1; if (roll <= YamlReader.getParams().getLooseImmunityRate()*100) { hasLostImmunity = true; } diff --git a/src/main/java/sma/environment/SquaredChunksEnvironment.java b/src/main/java/sma/environment/SquaredChunksEnvironment.java index 0a9f349ef9fb261992f4c139826a9e58d7770a64..f835005c5c25df2b1d54c496057d4793217efae0 100644 --- a/src/main/java/sma/environment/SquaredChunksEnvironment.java +++ b/src/main/java/sma/environment/SquaredChunksEnvironment.java @@ -58,8 +58,8 @@ public class SquaredChunksEnvironment implements Environment { } private List<Agent> getChunkNeighbors(int relativeTo, Point p) { - Point chunk = new Point(p.x/CHUNK_SIZE,p.y/CHUNK_SIZE); Point newPosition = getRelativePoint(relativeTo,p); + Point chunk = new Point(newPosition.x/CHUNK_SIZE,newPosition.y/CHUNK_SIZE); var neighbors = new ArrayList<Agent>(); try{ for (Agent agent : chunks[chunk.x][chunk.y]) { diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..64987c2350fb64fa75cdcbb3384f84d9dd85ab95 --- /dev/null +++ b/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Class-Path: jackson-core-2.13.2.jar snakeyaml-1.30.jar jackson-dataforma + t-yaml-2.13.2.jar jackson-annotations-2.13.2.jar jackson-databind-2.13. + 2.2.jar +Main-Class: sma.SMA diff --git a/src/main/resources/parameters.yaml b/src/main/resources/parameters.yaml index 35954189067a9c88e37892002e0ed9a9ecbea280..17975dae91acd821c3b4544ca5f53866e716dfe8 100644 --- a/src/main/resources/parameters.yaml +++ b/src/main/resources/parameters.yaml @@ -4,8 +4,8 @@ size : 500 #size of the world in pixels nbOfPatientZero : 1 infectionRate : 0.3 #chance that an infected agent will spread to a susceptible agent incubationRate : 0.1 #chance that an exposed agent become infected each cycle -recoveryRate : 0.05 #chance that an infected agent become recovered each cycle +recoveryRate : 0.3 #chance that an infected agent become recovered each cycle looseImmunityRate : 0.05 #chance that a recovered agent become suceptible again nbOfCycles : -1 #if the number is negative, will run endlessly -timeBetweenCycles : 50 #in milliseconds, 0 or lower will run cycles as fast as possible +timeBetweenCycles : 0 #in milliseconds, 0 or lower will run cycles as fast as possible synchronousMode : false #if true, will wake synchronously the agents in a pseudo-random order based on the given seed otherwise will wake up the agents asynchronously \ No newline at end of file diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..64987c2350fb64fa75cdcbb3384f84d9dd85ab95 --- /dev/null +++ b/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Class-Path: jackson-core-2.13.2.jar snakeyaml-1.30.jar jackson-dataforma + t-yaml-2.13.2.jar jackson-annotations-2.13.2.jar jackson-databind-2.13. + 2.2.jar +Main-Class: sma.SMA diff --git a/target/classes/parameters.yaml b/target/classes/parameters.yaml index c36c74cd815d2dabf784275c50395834ed4893d9..17975dae91acd821c3b4544ca5f53866e716dfe8 100644 --- a/target/classes/parameters.yaml +++ b/target/classes/parameters.yaml @@ -4,8 +4,8 @@ size : 500 #size of the world in pixels nbOfPatientZero : 1 infectionRate : 0.3 #chance that an infected agent will spread to a susceptible agent incubationRate : 0.1 #chance that an exposed agent become infected each cycle -recoveryRate : 0.05 #chance that an infected agent become recovered each cycle +recoveryRate : 0.3 #chance that an infected agent become recovered each cycle looseImmunityRate : 0.05 #chance that a recovered agent become suceptible again nbOfCycles : -1 #if the number is negative, will run endlessly -timeBetweenCycles : 50 #in milliseconds, 0 or lower will run as many cycles as possible +timeBetweenCycles : 0 #in milliseconds, 0 or lower will run cycles as fast as possible synchronousMode : false #if true, will wake synchronously the agents in a pseudo-random order based on the given seed otherwise will wake up the agents asynchronously \ No newline at end of file