diff --git a/dev-0/out.tsv b/dev-0/out.tsv index bf0535e..2979f2a 100644 --- a/dev-0/out.tsv +++ b/dev-0/out.tsv @@ -7,20 +7,18 @@ 0 0 1 -1 +0 1 0 1 1 1 0 -1 +0 1 0 0 -1 -1 -1 +0 1 1 1 @@ -28,11 +26,13 @@ 1 0 1 +1 +1 0 0 1 0 -0 +1 1 0 0 @@ -73,7 +73,7 @@ 0 1 0 -0 +1 1 0 1 @@ -84,12 +84,12 @@ 1 0 1 +0 1 1 1 0 0 -0 1 1 1 @@ -112,7 +112,7 @@ 1 1 1 -1 +0 1 0 1 @@ -141,7 +141,7 @@ 0 1 0 -1 +0 1 1 1 @@ -163,7 +163,7 @@ 0 0 1 -1 +0 0 1 0 @@ -187,7 +187,7 @@ 1 1 1 -0 +1 1 1 1 @@ -222,7 +222,7 @@ 1 1 1 -0 +1 1 0 1 @@ -234,9 +234,9 @@ 0 1 0 -0 1 0 +0 1 0 1 @@ -248,13 +248,13 @@ 1 1 1 -0 +1 0 1 1 1 0 -1 +0 0 0 0 @@ -274,23 +274,23 @@ 0 0 1 +0 +0 1 1 +0 1 +0 1 1 1 0 1 -0 -1 -0 1 1 1 1 0 -0 1 0 1 @@ -329,7 +329,7 @@ 1 1 0 -0 +1 1 0 0 @@ -340,14 +340,14 @@ 0 0 1 -0 +1 1 1 1 0 0 1 -0 +1 0 0 1 @@ -361,7 +361,7 @@ 1 0 0 -1 +0 1 1 0 @@ -382,7 +382,7 @@ 0 0 0 -0 +1 1 1 1 @@ -403,8 +403,8 @@ 1 1 1 -1 -1 +0 +0 1 0 1 @@ -419,7 +419,7 @@ 1 0 0 -0 +1 1 1 1 @@ -459,7 +459,7 @@ 0 0 1 -0 +1 0 1 1 @@ -528,12 +528,12 @@ 0 1 0 +0 1 1 -1 -1 -1 -1 +0 +0 +0 0 0 1 @@ -559,7 +559,7 @@ 1 1 1 -0 +1 0 0 1 @@ -569,11 +569,11 @@ 1 0 1 -1 +0 1 1 0 -1 +0 0 1 0 @@ -620,7 +620,7 @@ 1 1 0 -1 +0 0 1 0 @@ -632,9 +632,9 @@ 0 1 1 -0 1 1 +0 1 0 0 @@ -644,7 +644,7 @@ 0 0 0 -0 +1 1 0 0 @@ -656,10 +656,10 @@ 1 1 0 -0 1 0 0 +0 1 1 1 @@ -671,9 +671,9 @@ 1 0 1 -0 1 0 +0 1 1 0 @@ -695,7 +695,7 @@ 1 1 0 -1 +0 0 0 1 @@ -709,7 +709,7 @@ 0 0 1 -0 +1 0 1 0 @@ -741,7 +741,7 @@ 1 0 1 -0 +1 1 1 1 @@ -754,7 +754,7 @@ 1 1 0 -1 +0 0 1 1 @@ -764,7 +764,7 @@ 1 1 0 -0 +1 0 1 0 @@ -841,7 +841,7 @@ 1 1 1 -0 +1 1 0 1 @@ -861,7 +861,7 @@ 0 1 1 -0 +1 0 1 0 @@ -886,12 +886,12 @@ 1 0 1 -1 -1 0 1 0 +1 0 +1 0 1 1 @@ -901,12 +901,12 @@ 1 1 1 -0 1 1 -0 1 0 +1 +1 0 1 1 @@ -922,7 +922,7 @@ 1 1 1 -1 +0 0 0 1 @@ -937,7 +937,7 @@ 0 1 0 -0 +1 0 0 0 @@ -965,7 +965,7 @@ 0 1 1 -1 +0 0 1 1 @@ -998,7 +998,7 @@ 1 1 1 -1 +0 0 0 0 @@ -1069,7 +1069,7 @@ 0 1 0 -0 +1 1 0 1 @@ -1085,13 +1085,13 @@ 1 0 1 -1 +0 0 1 0 1 1 -0 +1 0 1 0 @@ -1126,25 +1126,25 @@ 1 0 1 -1 0 -1 0 1 0 -1 +0 0 1 1 +0 1 1 1 0 +0 +1 1 1 1 1 -0 0 1 0 @@ -1152,7 +1152,7 @@ 0 0 1 -1 +0 1 1 0 @@ -1177,7 +1177,7 @@ 0 0 1 -0 +1 0 0 0 @@ -1200,7 +1200,7 @@ 1 1 1 -1 +0 1 1 1 @@ -1233,7 +1233,7 @@ 1 1 1 -1 +0 1 1 1 @@ -1241,7 +1241,7 @@ 1 0 1 -1 +0 1 1 1 @@ -1281,16 +1281,16 @@ 0 0 0 -1 +0 0 1 1 1 1 -0 1 1 -0 +1 +1 0 1 1 @@ -1313,8 +1313,7 @@ 0 0 1 -1 -1 +0 1 1 1 @@ -1322,6 +1321,7 @@ 0 0 0 +0 1 1 0 @@ -1332,8 +1332,8 @@ 1 1 0 -1 -1 +0 +0 1 0 0 @@ -1347,7 +1347,7 @@ 1 1 0 -1 +0 1 1 1 @@ -1362,7 +1362,7 @@ 1 0 1 -1 +0 1 1 0 @@ -1390,7 +1390,7 @@ 0 1 0 -1 +0 0 1 1 @@ -1401,11 +1401,11 @@ 0 1 1 -0 1 1 1 0 +1 0 1 0 @@ -1413,7 +1413,7 @@ 0 0 1 -1 +0 1 1 0 @@ -1450,13 +1450,13 @@ 0 1 1 +0 1 1 1 1 1 1 -0 1 1 1 @@ -1552,7 +1552,7 @@ 1 0 0 -1 +0 0 1 1 @@ -1565,7 +1565,7 @@ 1 1 0 -0 +1 1 1 1 @@ -1579,7 +1579,7 @@ 0 1 1 -1 +0 1 1 1 @@ -1631,7 +1631,7 @@ 1 1 1 -0 +1 0 1 1 @@ -1642,7 +1642,7 @@ 0 1 0 -1 +0 1 0 0 @@ -1665,9 +1665,9 @@ 1 1 1 +0 1 1 -0 1 1 1 @@ -1676,7 +1676,7 @@ 1 0 0 -1 +0 0 1 1 @@ -1724,7 +1724,7 @@ 0 1 1 -0 +1 1 1 1 @@ -1753,7 +1753,7 @@ 1 0 0 -1 +0 1 0 1 @@ -1772,13 +1772,13 @@ 1 1 0 -1 +0 0 1 1 0 1 -0 +1 1 0 1 @@ -1786,7 +1786,7 @@ 1 0 0 -0 +1 1 1 0 @@ -1806,20 +1806,20 @@ 1 1 1 -1 +0 0 1 -1 -1 +0 1 1 1 1 0 0 +0 1 1 -1 +0 1 1 1 @@ -1860,8 +1860,8 @@ 1 1 1 -1 -1 +0 +0 0 1 0 @@ -1869,7 +1869,7 @@ 1 0 1 -0 +1 1 1 1 @@ -1886,7 +1886,7 @@ 0 1 1 -1 +0 1 1 0 @@ -1900,7 +1900,7 @@ 1 1 0 -0 +1 0 1 1 @@ -1917,7 +1917,7 @@ 1 0 1 -0 +1 0 0 1 @@ -1929,7 +1929,7 @@ 1 1 1 -0 +1 1 0 1 @@ -1947,7 +1947,7 @@ 1 1 0 -1 +0 1 1 1 @@ -1960,9 +1960,7 @@ 0 0 0 -1 -1 -1 +0 1 1 1 @@ -1972,14 +1970,16 @@ 1 0 1 +0 1 +0 1 1 1 0 1 1 -0 +1 1 1 0 @@ -1991,7 +1991,7 @@ 1 0 1 -0 +1 1 0 0 @@ -2016,7 +2016,7 @@ 1 1 1 -1 +0 1 1 1 @@ -2024,14 +2024,14 @@ 1 0 1 -0 +1 1 1 0 0 1 1 -0 +1 1 1 0 @@ -2053,8 +2053,6 @@ 1 1 0 -0 -1 1 1 1 @@ -2063,31 +2061,33 @@ 0 1 0 -0 1 1 0 1 +1 0 +1 +1 0 0 1 1 0 +0 1 1 +0 1 0 0 -1 0 -1 0 1 1 0 0 -1 +0 1 1 0 @@ -2131,14 +2131,14 @@ 1 0 1 -0 +1 1 0 1 1 0 0 -1 +0 0 1 1 @@ -2166,10 +2166,10 @@ 1 1 0 -1 0 1 -0 +1 +1 1 0 0 @@ -2183,7 +2183,7 @@ 1 1 1 -0 +1 1 1 0 @@ -2204,7 +2204,7 @@ 1 1 1 -0 +1 0 1 0 @@ -2225,20 +2225,20 @@ 1 0 1 -0 +1 1 0 0 1 1 -1 +0 1 1 1 1 1 0 -0 +1 1 0 1 @@ -2249,7 +2249,7 @@ 0 1 0 -1 +0 0 1 0 @@ -2271,13 +2271,13 @@ 1 0 0 -0 +1 0 1 1 1 0 -0 +1 1 1 0 @@ -2292,7 +2292,7 @@ 0 0 1 -0 +1 1 0 1 @@ -2301,9 +2301,8 @@ 0 0 1 -1 0 -1 +0 1 1 1 @@ -2311,6 +2310,7 @@ 1 1 0 +0 1 0 1 @@ -2322,11 +2322,11 @@ 0 0 1 -0 +1 1 0 0 -0 +1 1 0 1 @@ -2334,9 +2334,9 @@ 0 1 1 -1 0 -1 +0 +0 1 1 1 @@ -2375,28 +2375,28 @@ 0 1 0 -1 +0 1 1 1 1 1 0 -1 0 -1 0 0 -1 +0 0 1 +0 +0 1 1 1 0 1 0 -1 +0 1 1 1 @@ -2411,7 +2411,7 @@ 1 1 1 -0 +1 1 0 1 @@ -2430,12 +2430,11 @@ 0 1 1 -1 -1 0 1 0 1 +0 1 1 1 @@ -2444,6 +2443,7 @@ 1 1 1 +0 1 1 1 @@ -2474,7 +2474,7 @@ 1 1 0 -1 +0 1 1 0 @@ -2484,7 +2484,7 @@ 1 0 1 -0 +1 1 0 1 @@ -2516,19 +2516,19 @@ 1 1 1 -1 +0 1 1 1 1 0 0 -1 -1 -1 0 0 1 +0 +1 +1 1 0 1 @@ -2537,7 +2537,7 @@ 1 1 1 -0 +1 1 1 0 @@ -2557,12 +2557,12 @@ 1 0 1 -1 +0 1 0 0 1 -0 +1 1 1 1 @@ -2593,7 +2593,7 @@ 1 0 1 -1 +0 1 1 0 @@ -2610,7 +2610,7 @@ 1 1 0 -0 +1 1 1 1 @@ -2641,7 +2641,7 @@ 1 0 0 -0 +1 1 1 0 @@ -2675,11 +2675,11 @@ 1 1 0 +1 0 1 1 1 -0 1 1 1 @@ -2700,7 +2700,7 @@ 0 1 1 -0 +1 0 1 1 @@ -2714,7 +2714,7 @@ 1 0 0 -0 +1 0 1 1 @@ -2753,8 +2753,8 @@ 1 1 0 -1 0 +1 0 1 0 @@ -2769,7 +2769,7 @@ 1 1 1 -0 +1 1 1 1 @@ -2785,7 +2785,7 @@ 0 0 0 -1 +0 1 1 0 @@ -2828,7 +2828,7 @@ 1 1 1 -0 +1 1 1 1 @@ -2842,7 +2842,7 @@ 1 1 1 -1 +0 1 0 0 @@ -2947,7 +2947,7 @@ 0 1 1 -0 +1 1 1 1 @@ -2976,14 +2976,14 @@ 1 1 0 -0 1 -0 1 -0 +1 1 0 1 +0 +0 1 0 1 @@ -3019,7 +3019,7 @@ 1 1 1 -1 +0 1 1 1 @@ -3027,7 +3027,7 @@ 1 0 1 -1 +0 1 0 1 @@ -3119,7 +3119,7 @@ 1 0 0 -1 +0 1 1 1 @@ -3127,12 +3127,12 @@ 1 1 0 +0 1 1 1 1 -1 -1 +0 1 1 1 @@ -3144,7 +3144,7 @@ 0 1 1 -0 +1 0 1 1 @@ -3154,7 +3154,7 @@ 1 1 1 -0 +1 0 0 1 @@ -3168,7 +3168,7 @@ 1 1 1 -0 +1 1 0 1 @@ -3246,19 +3246,19 @@ 0 1 0 +0 1 1 1 1 1 -1 -1 +0 1 1 1 0 1 -1 +0 1 0 1 @@ -3270,7 +3270,7 @@ 0 1 1 -0 +1 1 1 1 @@ -3301,7 +3301,7 @@ 1 1 1 -1 +0 1 0 0 @@ -3318,7 +3318,7 @@ 1 1 1 -0 +1 1 1 0 @@ -3337,7 +3337,7 @@ 1 0 0 -0 +1 0 1 0 @@ -3362,14 +3362,14 @@ 1 1 1 -0 -0 1 +0 1 1 1 0 0 +0 1 1 0 @@ -3384,7 +3384,7 @@ 0 0 1 -0 +1 1 1 1 @@ -3406,15 +3406,15 @@ 0 1 1 -1 +0 0 1 1 1 +0 1 1 -1 -1 +0 0 1 1 @@ -3518,13 +3518,13 @@ 1 0 1 -1 +0 1 1 1 0 1 -1 +0 1 1 1 @@ -3532,7 +3532,7 @@ 1 1 0 -0 +1 1 1 1 @@ -3550,10 +3550,9 @@ 1 1 1 -0 1 -0 1 +0 1 1 1 @@ -3572,6 +3571,7 @@ 1 1 1 +1 0 0 1 @@ -3590,7 +3590,7 @@ 1 0 1 -0 +1 1 1 1 @@ -3610,7 +3610,7 @@ 1 1 0 -0 +1 1 1 1 @@ -3620,7 +3620,7 @@ 1 1 0 -0 +1 0 1 1 @@ -3630,7 +3630,7 @@ 1 1 0 -0 +1 0 1 1 @@ -3671,10 +3671,10 @@ 1 1 0 +1 0 0 0 -1 0 1 1 @@ -3683,7 +3683,7 @@ 0 0 1 -1 +0 1 1 0 @@ -3725,7 +3725,7 @@ 1 1 1 -1 +0 1 1 1 @@ -3739,7 +3739,7 @@ 0 1 1 -0 +1 1 1 1 @@ -3773,21 +3773,21 @@ 0 0 1 -1 +0 1 0 0 1 1 1 -0 +1 0 0 1 +0 1 1 1 -0 1 1 0 @@ -3796,7 +3796,7 @@ 1 1 1 -1 +0 0 1 1 @@ -3823,7 +3823,7 @@ 1 1 0 -1 +0 1 1 1 @@ -3833,7 +3833,7 @@ 1 1 1 -1 +0 0 1 0 @@ -3922,7 +3922,7 @@ 1 1 1 -1 +0 1 0 1 @@ -3961,7 +3961,7 @@ 0 1 1 -0 +1 1 1 1 @@ -3982,8 +3982,8 @@ 1 1 0 -0 1 +0 1 1 1 @@ -4022,7 +4022,7 @@ 1 0 1 -0 +1 1 0 1 @@ -4033,7 +4033,7 @@ 0 0 1 -0 +1 1 1 1 @@ -4060,7 +4060,7 @@ 0 1 0 -0 +1 1 1 1 @@ -4094,7 +4094,7 @@ 1 1 1 -1 +0 1 1 0 @@ -4108,7 +4108,7 @@ 1 1 0 -1 +0 1 0 0 @@ -4138,12 +4138,12 @@ 0 1 1 -1 +0 1 1 0 1 -1 +0 1 0 0 @@ -4223,7 +4223,7 @@ 1 0 1 -1 +0 1 0 1 @@ -4234,7 +4234,7 @@ 0 0 1 -0 +1 0 0 0 @@ -4244,7 +4244,7 @@ 0 1 1 -0 +1 1 1 1 @@ -4263,10 +4263,10 @@ 1 1 1 -0 1 1 1 +0 1 0 1 @@ -4286,7 +4286,7 @@ 1 1 1 -0 +1 1 1 1 @@ -4329,7 +4329,7 @@ 1 0 0 -1 +0 0 0 1 @@ -4342,7 +4342,7 @@ 0 1 1 -0 +1 1 1 1 @@ -4359,7 +4359,7 @@ 1 1 1 -1 +0 0 0 0 @@ -4392,9 +4392,9 @@ 0 0 0 -0 1 0 +0 1 0 0 @@ -4436,7 +4436,7 @@ 1 0 1 -1 +0 1 0 1 @@ -4472,7 +4472,7 @@ 1 1 0 -1 +0 0 1 1 @@ -4489,7 +4489,7 @@ 1 1 0 -0 +1 0 1 0 @@ -4507,29 +4507,29 @@ 1 0 0 -0 +1 0 0 1 1 1 0 -1 -1 0 1 +0 1 1 +0 1 1 0 0 -0 +1 1 1 0 0 -1 +0 0 1 1 @@ -4549,7 +4549,7 @@ 1 0 0 -0 +1 1 0 1 @@ -4564,7 +4564,7 @@ 0 1 1 -0 +1 1 0 1 @@ -4618,7 +4618,7 @@ 0 0 0 -1 +0 1 0 1 @@ -4702,7 +4702,7 @@ 1 0 0 -1 +0 0 0 0 @@ -4718,7 +4718,7 @@ 1 1 1 -0 +1 1 1 1 @@ -4741,7 +4741,7 @@ 1 1 1 -0 +1 1 0 1 @@ -4752,7 +4752,7 @@ 1 1 0 -1 +0 1 0 0 @@ -4760,7 +4760,7 @@ 0 1 1 -1 +0 1 0 1 @@ -4772,11 +4772,11 @@ 1 1 1 -1 0 0 0 -1 +0 +0 1 1 0 @@ -4788,7 +4788,7 @@ 0 1 1 -1 +0 1 1 1 @@ -4840,7 +4840,7 @@ 0 1 1 -0 +1 0 1 0 @@ -4848,13 +4848,13 @@ 0 0 1 -0 1 1 -0 1 +0 1 1 +0 1 0 0 @@ -4865,7 +4865,7 @@ 1 1 1 -0 +1 0 1 1 @@ -4874,9 +4874,9 @@ 1 0 1 -0 -0 1 +1 +0 0 1 1 @@ -4897,7 +4897,7 @@ 1 0 1 -0 +1 1 1 1 @@ -4925,11 +4925,12 @@ 0 1 1 -0 +1 0 0 0 1 +0 1 1 0 @@ -4938,7 +4939,6 @@ 0 0 0 -0 1 1 1 @@ -4946,13 +4946,13 @@ 1 1 0 -1 +0 1 0 1 1 1 -0 +1 0 0 0 @@ -4971,7 +4971,7 @@ 1 0 1 -0 +1 0 1 1 @@ -4981,7 +4981,7 @@ 0 1 1 -1 +0 1 0 1 @@ -4994,12 +4994,12 @@ 1 1 0 -0 1 1 1 1 1 +0 1 1 0 @@ -5015,7 +5015,7 @@ 1 1 0 -1 +0 0 1 1 @@ -5034,16 +5034,16 @@ 1 1 0 -0 -0 1 0 -0 1 1 0 1 1 +0 +1 +0 1 0 1 @@ -5051,10 +5051,10 @@ 0 1 1 -0 1 1 -0 +1 +1 1 1 1 @@ -5095,7 +5095,7 @@ 0 1 1 -1 +0 0 1 0 @@ -5105,7 +5105,7 @@ 1 0 1 -0 +1 1 1 0 @@ -5118,19 +5118,19 @@ 1 1 1 -1 +0 0 1 1 1 -1 +0 1 1 0 1 0 0 -0 +1 0 1 0 @@ -5140,12 +5140,12 @@ 1 0 0 -0 -0 1 +0 1 1 1 +0 1 0 0 @@ -5171,14 +5171,14 @@ 0 1 0 -1 +0 1 1 0 1 1 0 -1 +0 1 1 0 @@ -5189,7 +5189,7 @@ 0 1 1 -1 +0 1 1 0 @@ -5231,7 +5231,6 @@ 0 1 0 -0 1 1 1 @@ -5239,8 +5238,9 @@ 1 1 1 -0 1 +1 +0 0 0 1 @@ -5250,7 +5250,7 @@ 1 0 1 -0 +1 1 1 1 @@ -5314,7 +5314,7 @@ 0 1 1 -1 +0 1 1 1 @@ -5351,7 +5351,7 @@ 1 0 1 -0 +1 1 1 1 @@ -5389,9 +5389,9 @@ 1 1 1 -1 0 0 +1 0 1 1 @@ -5402,7 +5402,7 @@ 1 1 1 -0 +1 1 0 1 @@ -5433,7 +5433,7 @@ 1 1 0 -0 +1 1 0 0 @@ -5443,7 +5443,7 @@ 1 1 1 -0 +1 1 1 1 diff --git a/solution.py b/solution.py index 88ccd76..aa0280d 100644 --- a/solution.py +++ b/solution.py @@ -20,22 +20,23 @@ model = NeuralNetworkModel() criterion = torch.nn.BCELoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + def train(): with open('train/train.tsv') as f: docs = [line.rstrip() for line in f] docs_preprocessed = [] y = [] - for doc in docs[:10000]: + for doc in docs: y_with_doc = doc.split('\t') y.append(y_with_doc[0]) - doc = y_with_doc[1] - doc = preprocess(doc) - docs_preprocessed.append(doc) + docs_preprocessed.append(preprocess(y_with_doc[1])) y = [int(value) for value in y] y = np.reshape(y, (len(y), 1)) tagged_documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(docs_preprocessed)] + print("Fitting vectorizer...") global vectorizer vectorizer = Doc2Vec(tagged_documents, min_count=10, epochs=300, dm=0, vector_size=n_features) + print("DONE!") x = vectorizer.dv.vectors for epoch in range(5): loss_score = 0 @@ -58,25 +59,21 @@ def train(): print(epoch) print(get_loss_acc(model, x, y, criterion, optimizer)) + def classify(path): + print("Predicting for", path) with open(path + 'in.tsv') as f: docs = [line.rstrip() for line in f] docs = [preprocess(doc) for doc in docs] test_x = [vectorizer.infer_vector(doc) for doc in docs] test_x = np.array(test_x, np.float32) - test_x = torch.tensor(test_x) - predictions = model(test_x).detach().numpy()[:, 0] - p = [] - for prediction in predictions: - if prediction >= 0.5: - p.append(1) - else: - p.append(0) + predictions = model(torch.tensor(test_x)).detach().numpy()[:, 0] + predictions = [1 if value >= 0.5 else 0 for value in predictions] with open(path + 'out.tsv', 'w') as file: - for prediction in p: + for prediction in predictions: file.write("%i\n" % prediction) train() classify('dev-0/') -# classify('test-A/') \ No newline at end of file +classify('test-A/') \ No newline at end of file diff --git a/test-A/out.tsv b/test-A/out.tsv new file mode 100644 index 0000000..0fce810 --- /dev/null +++ b/test-A/out.tsv @@ -0,0 +1,5447 @@ +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +0 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +0 +0 +1 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +0 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +0 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +1 +0 +1 +1 +1 +0 +0 +0 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +0 +0 +0 +1 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +0 +1 +0 +1 +0 +0 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +0 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +0 +0 +1 +0 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +0 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +1 +0 +0 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +1 +1 +1 +1 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +1 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +0 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +0 +0 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +0 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +1 +0 +0 +1 +0 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +1 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +1 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +1 +0 +1 +0 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +1