{- | AIFC\/IMA audio decoding functions in this module are ported from http://sed.free.fr/aifc2wav.html -} {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE OverloadedStrings #-} module Sound.Jammit.Internal.Audio ( readIMA , writeWAV , clamp , metronomeClick ) where import Control.Monad (liftM2, unless) import Control.Monad.IO.Class (liftIO) import qualified Data.ByteString as B import Data.ByteString.Char8 () -- for IsString instance import qualified Data.ByteString.Unsafe as B import qualified Data.Conduit as C import qualified Data.Conduit.List as CL import qualified Data.Vector.Storable as V import Foreign (Int16, Int32, Ptr, Word16, Word32, Word8, castPtr, finalizerFree, mallocBytes, newForeignPtr, shiftL, shiftR) import GHC.IO.Handle (HandlePosn (..)) import qualified System.IO as IO import System.IO.Unsafe (unsafePerformIO) import Control.Monad.Trans.Resource (MonadResource) import qualified Data.Conduit.Audio as A parseChunk :: IO.Handle -> IO (B.ByteString, (HandlePosn, HandlePosn)) parseChunk h = do ctype <- B.hGet h 4 clen <- fmap toInteger (readBE h :: IO Word32) startPosn <- IO.hGetPosn h IO.hSeek h IO.RelativeSeek clen endPosn <- IO.hGetPosn h return (ctype, (startPosn, endPosn)) parseChunksUntil :: Maybe HandlePosn -> IO.Handle -> IO [(B.ByteString, (HandlePosn, HandlePosn))] parseChunksUntil maybeEnd h = do eof <- IO.hIsEOF h HandlePosn _ here <- IO.hGetPosn h let pastEnd = case maybeEnd of Nothing -> False Just (HandlePosn _ end) -> end <= here if eof || pastEnd then return [] else liftM2 (:) (parseChunk h) (parseChunksUntil maybeEnd h) readIMA :: (MonadResource m) => FilePath -> IO (A.AudioSource m Int16) readIMA fp = do let insideChunk h ctype maybeEnd f = do here <- liftIO $ IO.hGetPosn h chunks <- liftIO $ parseChunksUntil maybeEnd h case lookup ctype chunks of Nothing -> error $ "readIMA: no chunk of type " ++ show ctype Just (start, end) -> do liftIO $ IO.hSetPosn start x <- f end liftIO $ IO.hSetPosn here return x frames <- IO.withBinaryFile fp IO.ReadMode $ \h -> do let chunkBefore = insideChunk h "FORM" `chunkBefore` Nothing $ \formEnd -> do "AIFC" <- liftIO $ B.hGet h 4 "COMM" `chunkBefore` Just formEnd $ \_ -> do 2 <- liftIO (readBE h :: IO Word16) -- channels frames <- liftIO (readBE h :: IO Word32) -- number of chunk pairs bits <- liftIO (readBE h :: IO Word16) -- bits per sample, 0 means 16? unless (bits `elem` [0, 16]) $ error "readIMA: bits per sample not 16 or 0" -- next 10 bytes are sample rate as long float -- for now we just compare to the known 44100 0x400eac44 <- liftIO (readBE h :: IO Word32) 0 <- liftIO (readBE h :: IO Word32) 0 <- liftIO (readBE h :: IO Word16) "ima4" <- liftIO $ B.hGet h 4 return frames let src = C.bracketP (IO.openBinaryFile fp IO.ReadMode) IO.hClose $ \h -> do let chunkBefore = insideChunk h "FORM" `chunkBefore` Nothing $ \formEnd -> do "AIFC" <- liftIO $ B.hGet h 4 "SSND" `chunkBefore` Just formEnd $ \_ -> do 0 <- liftIO (readBE h :: IO Word32) -- offset 0 <- liftIO (readBE h :: IO Word32) -- blocksize let go _ _ 0 = return () go predL predR remFrames = do chunkL <- liftIO $ B.hGet h 34 chunkR <- liftIO $ B.hGet h 34 let (predL', vectL) = decodeChunk (predL, chunkL) (predR', vectR) = decodeChunk (predR, chunkR) C.yield $ A.interleave [vectL, vectR] go predL' predR' $ remFrames - 1 go 0 0 frames return $ A.AudioSource src 44100 2 $ fromIntegral frames foreign import ccall unsafe "decode_chunk" c_decodeChunk :: Ptr Word8 -> Ptr Word8 -> Int16 -> IO Int16 decodeChunk :: (Int16, B.ByteString) -> (Int16, V.Vector Int16) decodeChunk (initPredictor, chunk) = unsafePerformIO $ do B.unsafeUseAsCString chunk $ \cstr -> do p <- mallocBytes 128 lastPredictor <- c_decodeChunk (castPtr cstr) p initPredictor fp <- newForeignPtr finalizerFree $ castPtr p return (lastPredictor, V.unsafeFromForeignPtr0 fp 64) clamp :: (Ord a) => (a, a) -> a -> a clamp (vmin, vmax) v | v < vmin = vmin | v > vmax = vmax | otherwise = v writeWAV :: (MonadResource m) => FilePath -> A.AudioSource m Int16 -> m () writeWAV fp (A.AudioSource s r c _) = s C.$$ C.bracketP (IO.openBinaryFile fp IO.WriteMode) IO.hClose (\h -> do let chunk ctype f = do let getPosn = liftIO $ IO.hGetPosn h liftIO $ B.hPut h ctype lenPosn <- getPosn liftIO $ B.hPut h $ B.pack [0xDE, 0xAD, 0xBE, 0xEF] -- filled in later HandlePosn _ start <- getPosn x <- f endPosn@(HandlePosn _ end) <- getPosn liftIO $ do IO.hSetPosn lenPosn writeLE h (fromIntegral $ end - start :: Word32) IO.hSetPosn endPosn return x chunk "RIFF" $ do liftIO $ B.hPut h "WAVE" chunk "fmt " $ liftIO $ do writeLE h (1 :: Word16) -- 1 is PCM writeLE h (fromIntegral c :: Word16) -- channels writeLE h (floor r :: Word32) -- sample rate writeLE h (floor r * fromIntegral c * 2 :: Word32) -- avg. bytes per second = rate * block align writeLE h (fromIntegral c * 2 :: Word16) -- block align = chans * (bps / 8) writeLE h (16 :: Word16) -- bits per sample chunk "data" $ CL.mapM_ $ \v -> liftIO $ do V.forM_ v $ writeLE h ) class BE a where readBE :: IO.Handle -> IO a instance BE Word32 where readBE h = do [a, b, c, d] <- fmap B.unpack $ B.hGet h 4 return $ sum [ fromIntegral a `shiftL` 24 , fromIntegral b `shiftL` 16 , fromIntegral c `shiftL` 8 , fromIntegral d ] instance BE Int32 where readBE h = fmap fromIntegral (readBE h :: IO Word32) instance BE Word16 where readBE h = do [a, b] <- fmap B.unpack $ B.hGet h 2 return $ sum [ fromIntegral a `shiftL` 8 , fromIntegral b ] instance BE Int16 where readBE h = fmap fromIntegral (readBE h :: IO Word16) class LE a where writeLE :: IO.Handle -> a -> IO () instance LE Word32 where writeLE h w = B.hPut h $ B.pack [a, b, c, d] where a = fromIntegral w b = fromIntegral $ w `shiftR` 8 c = fromIntegral $ w `shiftR` 16 d = fromIntegral $ w `shiftR` 24 instance LE Word16 where writeLE h w = B.hPut h $ B.pack [a, b] where a = fromIntegral w b = fromIntegral $ w `shiftR` 8 instance LE Int32 where writeLE h w = writeLE h (fromIntegral w :: Word32) instance LE Int16 where writeLE h w = writeLE h (fromIntegral w :: Word16) metronomeClick :: (Monad m) => A.AudioSource m Int16 metronomeClick = A.AudioSource { A.rate = 44100 , A.channels = 2 , A.frames = 6190 , A.source = C.yield $ V.fromList [-460,-473,-472,-471,-1118,-1127,-1133,-1130,3241,3230,3223,3235,3861,3849,3847,3830,-3296,-3286,-3288,-3306,-5530,-5519,-5516,-5531,-2025,-2030,-2025,-2032,769,765,783,763,3795,3803,3808,3804,12511,12503,12521,12512,6475,6476,6478,6471,-5107,-5115,-5117,-5119,-3021,-3040,-3038,-3044,3935,3931,3933,3935,5749,5724,5727,5730,-3305,-3316,-3331,-3326,-11945,-11963,-11976,-11977,-9430,-9432,-9443,-9450,-2891,-2888,-2903,-2917,-111,-113,-124,-121,-7398,-7416,-7413,-7411,-16532,-16550,-16552,-16545,-10375,-10392,-10372,-10379,7822,7816,7822,7818,20898,20888,20887,20879,15561,15560,15571,15549,-4653,-4652,-4638,-4650,-10826,-10836,-10833,-10828,-2921,-2938,-2928,-2947,14217,14218,14219,14215,15038,15034,15046,15041,-234,-229,-213,-232,-8146,-8131,-8130,-8146,-4973,-4968,-4953,-4970,2677,2670,2673,2669,-1898,-1903,-1910,-1913,-17919,-17930,-17934,-17927,-24684,-24691,-24683,-24695,-13099,-13098,-13100,-13108,4232,4242,4240,4220,6202,6210,6192,6178,-7081,-7086,-7073,-7082,-11987,-11980,-11978,-11998,-3104,-3108,-3108,-3110,17045,17035,17058,17037,25505,25527,25532,25507,15852,15857,15872,15868,386,365,375,375,-6259,-6269,-6257,-6283,-1418,-1425,-1440,-1433,9081,9069,9072,9068,10607,10580,10588,10606,-1044,-1072,-1057,-1060,-7486,-7484,-7472,-7495,-1734,-1729,-1729,-1720,995,986,999,994,-2177,-2173,-2171,-2184,-6418,-6423,-6415,-6407,-11021,-11029,-11003,-11003,-6747,-6764,-6752,-6745,3093,3071,3094,3094,11281,11264,11281,11279,9394,9403,9416,9390,395,406,392,378,6322,6318,6315,6322,20177,20160,20163,20162,25221,25229,25221,25203,18821,18820,18827,18819,2472,2461,2472,2470,-2725,-2738,-2718,-2723,3850,3853,3854,3841,5098,5093,5080,5087,-456,-463,-448,-447,-9898,-9907,-9897,-9902,-12839,-12852,-12845,-12850,-10204,-10214,-10213,-10217,-2236,-2241,-2245,-2248,554,528,526,547,-986,-999,-986,-1005,6460,6448,6458,6456,10912,10898,10894,10902,2210,2202,2205,2205,-74,-83,-68,-77,7657,7647,7653,7648,12351,12336,12353,12352,-701,-723,-709,-709,9469,9464,9463,9463,24436,24424,24441,24422,12072,12084,12092,12080,-4000,-4013,-3993,-4000,-3791,-3800,-3810,-3818,2066,2063,2067,2052,-10419,-10409,-10409,-10439,-12565,-12558,-12572,-12583,-6630,-6637,-6648,-6640,-4288,-4296,-4283,-4295,-7188,-7184,-7172,-7176,-2104,-2116,-2101,-2101,9161,9159,9146,9135,9283,9280,9286,9270,6558,6546,6546,6548,7515,7502,7504,7503,11644,11630,11641,11651,2594,2575,2582,2589,-2201,-2209,-2206,-2215,7315,7309,7322,7309,16817,16818,16809,16808,10260,10262,10259,10241,-3400,-3380,-3385,-3419,-7333,-7313,-7323,-7327,-2903,-2918,-2904,-2909,-3711,-3730,-3724,-3724,-6825,-6818,-6808,-6823,-3237,-3244,-3232,-3223,-1962,-1981,-1961,-1957,-930,-927,-928,-942,-3474,-3481,-3483,-3487,-3875,-3856,-3872,-3891,17,29,5,0,-1382,-1393,-1403,-1397,3435,3433,3433,3416,7861,7846,7846,7835,9889,9902,9878,9868,2956,2940,2938,2944,-6063,-6049,-6048,-6067,-5354,-5346,-5349,-5362,-3277,-3271,-3266,-3275,44,43,59,53,-856,-862,-845,-846,-9757,-9773,-9753,-9755,-15800,-15805,-15801,-15806,-11491,-11498,-11488,-11506,-7082,-7071,-7076,-7085,-5594,-5593,-5594,-5600,-6157,-6162,-6167,-6172,-5303,-5303,-5297,-5319,-9559,-9550,-9525,-9570,-6843,-6830,-6831,-6836,-3748,-3758,-3735,-3750,-4616,-4622,-4621,-4620,-4622,-4632,-4633,-4636,-3938,-3933,-3926,-3941,-2941,-2926,-2939,-2952,-3780,-3783,-3777,-3781,-4005,-4022,-4026,-4015,-5264,-5281,-5270,-5266,-6171,-6190,-6179,-6167,-7458,-7458,-7458,-7459,-9514,-9513,-9517,-9514,-8232,-8247,-8243,-8249,-8371,-8365,-8367,-8383,-7075,-7067,-7062,-7069,-8120,-8124,-8126,-8134,-4744,-4738,-4752,-4753,-3651,-3669,-3675,-3661,-7017,-7029,-7027,-7043,-10815,-10807,-10796,-10803,-9833,-9841,-9825,-9834,-6695,-6704,-6709,-6703,-3849,-3852,-3849,-3872,-4017,-4009,-4002,-4012,-1213,-1220,-1230,-1216,-1409,-1432,-1431,-1426,937,931,937,934,-2242,-2233,-2220,-2245,-561,-554,-554,-567,1716,1706,1714,1715,-1702,-1711,-1705,-1710,-5397,-5414,-5410,-5400,-3316,-3337,-3329,-3319,-2612,-2630,-2625,-2610,-2957,-2968,-2977,-2974,-7560,-7576,-7572,-7572,-3443,-3456,-3438,-3440,-630,-646,-645,-638,-155,-164,-156,-156,-541,-553,-555,-536,-1030,-1051,-1052,-1043,2654,2638,2643,2644,1828,1832,1824,1816,3815,3804,3804,3805,6675,6673,6682,6675,8411,8407,8417,8423,3814,3810,3833,3818,2824,2831,2843,2830,6626,6628,6644,6628,5172,5164,5166,5164,2330,2334,2320,2312,2193,2175,2175,2180,4091,4096,4099,4084,4438,4432,4429,4427,4158,4156,4150,4146,1588,1565,1587,1584,-875,-893,-880,-873,-749,-768,-775,-761,5800,5790,5809,5808,4415,4422,4442,4422,4031,4039,4034,4031,-174,-187,-178,-165,608,603,613,601,4260,4240,4253,4255,8768,8754,8751,8756,8334,8343,8352,8332,2976,2979,2978,2967,4111,4113,4097,4110,7056,7055,7055,7044,5853,5843,5854,5851,3773,3770,3784,3781,3304,3300,3310,3299,2776,2768,2775,2763,1571,1576,1566,1568,110,112,103,99,1194,1182,1173,1182,4686,4683,4677,4677,7108,7102,7111,7116,4121,4101,4105,4117,2378,2360,2359,2370,4810,4796,4817,4805,6257,6255,6278,6262,5607,5609,5610,5602,3241,3233,3243,3249,3344,3323,3333,3351,5450,5421,5425,5433,4289,4268,4274,4274,1399,1394,1393,1379,-640,-636,-634,-651,814,807,815,802,898,911,917,896,1072,1088,1091,1072,759,780,782,780,1216,1208,1217,1210,3309,3289,3288,3289,4691,4683,4677,4675,1166,1166,1173,1166,1608,1623,1635,1618,-288,-268,-269,-278,701,688,686,696,1643,1611,1618,1632,-106,-112,-120,-116,-3017,-3030,-3024,-3018,-2814,-2826,-2812,-2804,-2398,-2404,-2383,-2391,-3683,-3688,-3671,-3673,-3499,-3502,-3493,-3485,-4220,-4230,-4224,-4242,-2525,-2522,-2523,-2515,-2920,-2921,-2918,-2933,-2642,-2664,-2655,-2648,-5135,-5151,-5131,-5134,155,159,151,132,713,715,722,706,762,763,755,748,-971,-999,-992,-991,-649,-656,-632,-648,-3658,-3651,-3642,-3665,-4731,-4726,-4738,-4746,-3051,-3044,-3054,-3060,-2905,-2910,-2898,-2907,-5093,-5110,-5092,-5107,-6897,-6910,-6897,-6913,-8506,-8502,-8496,-8506,-6968,-6976,-6968,-6979,-4769,-4767,-4764,-4781,-6688,-6678,-6672,-6689,-4865,-4867,-4857,-4861,-4142,-4152,-4146,-4136,-2792,-2816,-2790,-2806,-2980,-2977,-2968,-2990,-4405,-4400,-4405,-4421,-2214,-2213,-2217,-2224,-1450,-1454,-1440,-1461,-2790,-2772,-2767,-2786,-4231,-4233,-4228,-4228,-1684,-1690,-1681,-1676,-234,-247,-238,-241,-2327,-2335,-2318,-2316,-6396,-6418,-6402,-6394,-7588,-7603,-7594,-7604,-5543,-5540,-5541,-5555,-1906,-1896,-1894,-1916,1244,1254,1254,1244,-2011,-2005,-1998,-2011,-3595,-3587,-3578,-3594,-2249,-2249,-2253,-2253,854,850,842,842,1721,1714,1709,1692,5919,5922,5921,5905,985,982,1000,1005,-472,-502,-486,-489,-2829,-2824,-2819,-2841,-706,-697,-703,-709,2023,2019,2025,2025,271,274,284,271,-2868,-2892,-2870,-2870,1240,1228,1233,1232,4364,4361,4367,4359,3274,3272,3268,3273,1712,1711,1699,1699,2625,2611,2613,2613,5559,5556,5565,5551,5692,5701,5681,5697,2507,2488,2491,2495,99,101,101,81,1552,1552,1551,1546,1291,1280,1286,1290,1458,1445,1465,1449,1446,1442,1449,1441,841,830,839,828,2267,2270,2283,2269,3445,3441,3460,3436,404,411,407,388,553,548,541,534,2537,2531,2537,2527,3301,3290,3309,3303,4867,4867,4873,4858,5497,5502,5514,5490,1901,1918,1925,1898,4187,4204,4204,4183,4636,4649,4629,4618,2277,2276,2301,2295,575,571,568,561,1220,1222,1221,1210,1642,1637,1628,1632,1900,1877,1888,1893,1761,1749,1764,1767,-20,-32,-30,-22,1083,1084,1093,1094,302,301,318,322,-115,-119,-103,-115,873,876,896,876,-381,-364,-354,-373,3663,3667,3671,3665,2270,2270,2272,2264,228,211,216,228,-2128,-2148,-2122,-2127,-153,-162,-139,-162,83,88,93,79,-2338,-2358,-2368,-2368,-3043,-3058,-3051,-3036,1878,1872,1901,1890,1164,1176,1189,1177,-435,-440,-430,-450,-1119,-1117,-1127,-1121,2033,2007,2008,2019,2658,2645,2648,2633,-445,-440,-432,-442,-3649,-3663,-3648,-3645,-631,-642,-619,-614,1520,1503,1517,1532,-1954,-1975,-1962,-1962,-2838,-2854,-2850,-2843,1647,1635,1643,1649,-422,-424,-412,-412,-765,-768,-762,-761,-1172,-1183,-1188,-1179,1440,1416,1427,1441,-2459,-2476,-2458,-2455,-4552,-4572,-4557,-4569,-2017,-2006,-2011,-2023,745,747,746,739,611,609,631,619,-34,-23,-19,-36,-1458,-1447,-1454,-1476,-1985,-1985,-1984,-1997,111,116,129,109,1130,1140,1152,1139,-935,-940,-920,-926,-3293,-3309,-3286,-3285,-1944,-1969,-1972,-1953,736,727,731,715,865,859,850,852,-174,-200,-192,-174,-2148,-2168,-2158,-2157,-1036,-1041,-1025,-1037,-1793,-1790,-1789,-1787,-3626,-3641,-3644,-3637,-4279,-4293,-4290,-4290,-117,-121,-114,-120,-549,-561,-540,-535,-592,-586,-576,-582,-1530,-1543,-1536,-1523,-2391,-2392,-2392,-2402,38,30,48,45,1764,1760,1759,1757,-2374,-2383,-2368,-2377,-2149,-2150,-2152,-2165,462,471,464,446,-2217,-2215,-2217,-2230,-2753,-2747,-2762,-2760,-557,-570,-573,-567,1263,1250,1273,1277,-282,-300,-285,-286,-3279,-3282,-3276,-3301,-3408,-3402,-3407,-3404,-2690,-2713,-2700,-2700,-1500,-1519,-1515,-1507,3191,3180,3199,3182,641,662,660,631,-2797,-2789,-2773,-2778,1122,1130,1144,1115,598,598,608,606,-234,-248,-238,-235,-2487,-2500,-2486,-2484,-278,-281,-271,-283,-1762,-1763,-1758,-1772,-1202,-1193,-1175,-1203,1333,1352,1360,1333,464,460,461,456,-266,-274,-267,-276,-1374,-1374,-1368,-1386,-451,-454,-463,-457,3969,3952,3952,3952,3666,3668,3659,3655,-1248,-1252,-1258,-1261,-1067,-1081,-1093,-1067,-794,-809,-794,-781,2111,2108,2111,2107,1915,1905,1883,1892,1029,1036,1011,1003,2708,2713,2700,2687,-382,-380,-385,-389,1134,1126,1123,1124,4167,4147,4156,4159,892,882,872,869,-3301,-3318,-3334,-3339,-213,-220,-223,-232,2919,2915,2924,2920,1889,1879,1884,1891,486,487,512,505,-1328,-1342,-1328,-1323,449,430,444,437,3504,3500,3505,3499,2882,2884,2873,2870,1083,1069,1081,1074,1735,1724,1736,1747,738,710,729,725,648,655,645,644,1363,1350,1357,1348,2555,2559,2553,2533,-1589,-1582,-1578,-1593,-398,-397,-385,-396,2027,2015,2019,2018,1232,1215,1220,1217,2251,2246,2231,2232,2689,2674,2658,2658,1599,1600,1605,1582,-1171,-1152,-1153,-1171,747,746,773,757,1794,1813,1822,1810,1721,1708,1717,1723,308,293,303,279,-1066,-1055,-1067,-1076,100,96,91,100,-211,-235,-230,-225,-1893,-1889,-1883,-1895,-1751,-1765,-1753,-1761,646,641,657,641,842,841,856,842,1600,1612,1626,1619,2370,2361,2373,2370,197,190,190,177,-273,-277,-277,-274,-1019,-1022,-1002,-1019,549,568,548,546,1335,1312,1331,1323,1714,1720,1735,1714,-2935,-2917,-2935,-2949,-3946,-3947,-3974,-3969,-3203,-3209,-3215,-3212,-2897,-2911,-2914,-2910,-702,-716,-718,-706,205,195,194,182,984,984,962,965,1203,1199,1197,1193,1188,1185,1172,1185,-1,-24,-17,-22,-776,-775,-762,-771,157,163,156,142,-1847,-1846,-1868,-1867,212,207,212,211,4418,4423,4408,4406,-133,-135,-141,-143,-2643,-2640,-2648,-2650,567,567,568,561,1336,1325,1320,1332,-647,-674,-657,-647,-2097,-2108,-2104,-2101,-346,-368,-382,-369,-2759,-2775,-2755,-2774,-2367,-2363,-2364,-2376,-168,-182,-184,-168,711,692,699,689,1380,1385,1378,1373,1473,1459,1479,1478,3505,3489,3505,3507,3521,3518,3527,3523,678,680,681,690,1004,995,1004,1002,710,710,715,709,225,226,229,223,-1754,-1759,-1751,-1750,-7,-20,-9,-8,-474,-468,-461,-455,-1098,-1097,-1081,-1085,-2205,-2197,-2195,-2189,541,531,547,548,-906,-912,-902,-904,-2011,-2011,-2010,-2019,4284,4288,4298,4276,2449,2462,2452,2444,-1657,-1665,-1654,-1652,1599,1588,1599,1591,2241,2253,2246,2236,-85,-89,-84,-85,-1343,-1354,-1370,-1365,1983,1973,1965,1976,-583,-599,-597,-591,78,83,76,77,748,749,763,746,-322,-312,-301,-311,-1689,-1678,-1682,-1709,-3196,-3167,-3153,-3184,-2255,-2223,-2223,-2245,-618,-599,-596,-600,-358,-352,-333,-348,-1135,-1134,-1135,-1126,214,193,196,209,1571,1551,1582,1580,873,863,886,874,-1985,-1978,-1973,-1980,-1367,-1374,-1375,-1384,1255,1259,1243,1230,1502,1514,1510,1483,-600,-588,-584,-603,-2233,-2226,-2216,-2225,-2393,-2399,-2382,-2384,-1722,-1725,-1731,-1739,-373,-365,-389,-383,-593,-603,-607,-603,-1582,-1587,-1593,-1592,-1858,-1865,-1864,-1872,-226,-225,-223,-235,159,169,153,150,34,28,37,30,37,39,56,51,-1417,-1424,-1393,-1414,32,44,75,59,-249,-217,-214,-244,233,261,246,241,-335,-347,-338,-334,474,453,459,457,-100,-111,-128,-124,-712,-713,-723,-735,1072,1054,1054,1065,1815,1790,1809,1816,-3112,-3140,-3129,-3122,-2417,-2415,-2405,-2421,332,324,322,314,1325,1319,1318,1319,968,956,937,944,-39,-62,-58,-47,1051,1048,1052,1035,73,82,86,75,972,969,980,966,503,518,512,509,-658,-650,-646,-658,-1773,-1773,-1762,-1771,-1350,-1347,-1338,-1344,-765,-774,-777,-766,1409,1389,1395,1400,1231,1225,1220,1202,-274,-276,-292,-286,1507,1482,1471,1483,2816,2814,2819,2804,3053,3053,3083,3068,1842,1845,1857,1838,5,-3,-9,-3,2444,2436,2451,2416,-280,-263,-261,-271,184,182,188,185,652,655,662,641,570,586,591,573,-196,-204,-197,-205,-2547,-2547,-2546,-2554,-2670,-2675,-2680,-2672,-161,-176,-181,-181,1794,1784,1772,1779,-1127,-1135,-1134,-1118,1035,1010,1018,1031,3189,3184,3199,3195,3162,3170,3185,3170,3190,3195,3208,3191,381,373,376,367,717,712,721,715,-749,-768,-766,-759,1348,1336,1357,1358,421,414,436,432,-222,-226,-208,-202,1776,1769,1789,1775,1088,1092,1100,1097,-1188,-1186,-1198,-1209,-1522,-1526,-1545,-1539,-438,-451,-448,-463,507,509,501,481,-644,-649,-666,-672,412,410,408,386,1725,1730,1703,1697,1869,1867,1865,1843,1694,1694,1705,1700,541,545,555,523,624,631,633,626,4,-10,-12,-15,-1611,-1603,-1597,-1628,-435,-411,-412,-444,-237,-225,-226,-238,473,469,469,457,646,643,646,645,1532,1510,1527,1522,1708,1688,1692,1695,778,754,770,766,-2773,-2792,-2784,-2775,-1872,-1892,-1877,-1882,-650,-652,-632,-654,-799,-788,-774,-797,600,595,613,586,114,113,96,101,2020,1994,2005,2016,1379,1368,1384,1380,-67,-76,-62,-74,134,121,123,110,229,221,222,209,-1805,-1800,-1794,-1813,-3214,-3224,-3208,-3215,986,971,1004,998,2093,2084,2097,2103,-1997,-2010,-2001,-2006,-2118,-2130,-2129,-2145,-2092,-2117,-2117,-2098,-1260,-1294,-1304,-1294,364,338,352,351,1096,1084,1102,1090,1692,1692,1703,1703,811,807,812,809,-1062,-1066,-1065,-1072,1594,1584,1593,1581,1917,1906,1923,1914,-1930,-1943,-1925,-1936,-390,-385,-378,-402,-719,-720,-719,-725,-1790,-1802,-1794,-1786,-860,-870,-870,-871,48,42,45,33,-1424,-1420,-1413,-1429,-1403,-1415,-1390,-1412,-941,-937,-929,-957,445,455,444,425,1419,1419,1405,1397,398,385,379,392,1095,1074,1080,1102,1294,1269,1290,1279,757,772,785,762,1672,1676,1683,1668,1255,1239,1236,1250,-2388,-2396,-2389,-2400,-1656,-1654,-1673,-1667,1135,1126,1131,1134,-135,-151,-135,-131,-639,-659,-645,-651,1328,1317,1321,1317,996,1004,1018,997,-308,-304,-301,-315,1269,1259,1262,1247,1086,1099,1104,1079,11,24,28,6,289,267,280,281,1493,1475,1497,1489,422,409,435,428,-904,-910,-897,-886,-769,-787,-776,-773,1732,1714,1729,1730,1756,1749,1754,1750,49,40,49,39,1764,1762,1756,1765,860,841,854,856,67,63,69,55,-233,-237,-248,-250,399,384,394,389,211,202,191,196,1632,1613,1626,1630,-313,-337,-303,-309,-1129,-1128,-1127,-1141,-321,-321,-324,-341,-22,-24,-18,-38,1155,1158,1155,1150,2733,2705,2727,2733,1178,1174,1179,1163,173,183,192,174,-390,-389,-377,-382,-378,-388,-367,-363,286,270,275,282,-1438,-1446,-1453,-1455,2112,2103,2103,2101,3684,3673,3671,3671,1199,1199,1200,1196,171,154,157,159,-322,-330,-332,-332,1852,1844,1846,1844,394,392,406,396,-295,-294,-302,-311,-1223,-1230,-1233,-1231,-494,-501,-487,-486,105,95,122,112,-3466,-3467,-3464,-3460,-696,-687,-682,-691,4159,4160,4173,4161,-180,-167,-163,-177,-2818,-2822,-2833,-2819,-552,-567,-572,-558,1343,1338,1364,1357,-766,-785,-755,-763,-142,-135,-139,-135,453,424,426,434,1,-7,-11,-26,-506,-510,-497,-502,1372,1376,1380,1374,710,709,700,708,-1284,-1286,-1265,-1275,-1163,-1172,-1154,-1155,-1672,-1683,-1686,-1682,-1602,-1599,-1592,-1612,574,587,594,581,-612,-624,-637,-616,-2863,-2878,-2879,-2883,-3517,-3506,-3518,-3524,293,301,294,291,-58,-56,-53,-48,-659,-653,-655,-646,271,254,261,270,-551,-566,-574,-570,-2078,-2081,-2068,-2078,-880,-869,-882,-899,-855,-844,-854,-860,-29,-9,-13,-15,-26,-43,-39,-17,-825,-845,-839,-814,345,328,332,339,-233,-225,-216,-215,-1126,-1114,-1109,-1125,739,737,734,733,1010,1023,1009,1012,-521,-539,-542,-524,-849,-851,-841,-853,-896,-884,-873,-884,-496,-491,-492,-500,-783,-780,-783,-787,-43,-57,-62,-46,-46,-58,-37,-47,-2212,-2200,-2193,-2201,-1435,-1433,-1442,-1432,-955,-964,-969,-972,1936,1946,1959,1934,1837,1851,1860,1848,224,230,235,223,-350,-331,-328,-346,-1031,-1034,-1049,-1038,895,893,906,893,-623,-615,-593,-614,-980,-951,-953,-971,1234,1233,1248,1242,116,118,114,117,-747,-748,-748,-743,-1250,-1251,-1230,-1244,-173,-144,-133,-163,-62,-36,-46,-60,57,56,36,54,-11,-35,-11,-11,-370,-371,-359,-366,341,341,335,321,388,385,391,398,76,68,62,67,1579,1552,1561,1578,920,896,889,916,709,686,697,705,-131,-131,-140,-158,-138,-134,-153,-150,836,833,852,826,315,334,343,317,1260,1280,1277,1257,-1205,-1200,-1220,-1224,-1222,-1230,-1227,-1232,829,822,823,819,1401,1407,1397,1389,1340,1342,1353,1332,-673,-678,-670,-673,257,255,263,269,-278,-287,-262,-257,49,36,50,60,1428,1421,1422,1433,1341,1313,1320,1331,694,688,669,674,342,338,323,339,1576,1571,1588,1577,2234,2246,2249,2243,-448,-465,-464,-476,-390,-397,-390,-381,2872,2854,2874,2857,962,960,960,961,-1219,-1232,-1234,-1242,448,437,442,437,2358,2343,2346,2351,875,846,863,866,-304,-310,-298,-305,-406,-412,-410,-411,-10,-19,-11,-16,559,550,542,543,251,235,244,243,1682,1669,1685,1677,1028,1007,1030,1043,-2083,-2103,-2093,-2087,202,190,190,194,2078,2060,2055,2061,779,781,772,760,265,254,255,257,470,454,479,465,235,253,271,252,-1025,-1016,-1005,-1006,-20,-15,-8,-22,1435,1436,1456,1447,1368,1380,1382,1386,634,618,623,632,-65,-71,-62,-74,-1213,-1211,-1212,-1224,-1463,-1470,-1453,-1457,815,801,802,809,1315,1295,1306,1304,-915,-920,-919,-916,-1763,-1787,-1781,-1768,358,347,364,357,359,343,343,353,-792,-815,-829,-805,-797,-840,-861,-840,223,199,202,210,-232,-241,-224,-243,-1612,-1616,-1617,-1620,-326,-352,-333,-335,-507,-523,-491,-491,979,949,977,981,-75,-87,-69,-95,-124,-115,-119,-135,134,125,140,135,-869,-871,-854,-867,-1069,-1080,-1070,-1081,-200,-197,-200,-219,-325,-319,-332,-345,-1169,-1177,-1151,-1168,-1165,-1185,-1176,-1187,325,320,324,316,-802,-810,-785,-799,-761,-782,-763,-759,-848,-879,-854,-843,-335,-350,-321,-337,-16,-29,-16,-28,-181,-178,-181,-193,-244,-266,-257,-253,-1120,-1139,-1134,-1128,134,112,129,130,729,718,734,712,629,638,654,643,-381,-377,-363,-383,-195,-192,-180,-195,-620,-635,-612,-611,-239,-257,-241,-249,102,93,111,98,-637,-648,-649,-650,48,32,42,32,-1197,-1197,-1180,-1194,-1148,-1153,-1142,-1153,460,451,462,450,651,633,649,643,-609,-617,-620,-632,-568,-569,-579,-597,1568,1568,1569,1553,2404,2396,2398,2391,532,514,518,509,-1209,-1223,-1233,-1229,41,33,41,31,-119,-123,-131,-134,491,490,495,490,441,424,435,441,-2,-17,-3,-16,-1027,-1032,-1031,-1031,206,205,216,202,643,651,646,635,-338,-350,-359,-363,110,104,93,85,298,291,308,290,402,393,422,397,846,858,872,856,614,600,595,590,189,181,178,173,932,922,955,940,2046,2038,2059,2068,-105,-116,-106,-116,-1224,-1230,-1230,-1239,804,810,798,801,1026,1003,1027,1033,-1388,-1396,-1370,-1382,-1503,-1504,-1485,-1494,251,256,264,249,574,573,589,579,618,636,645,621,782,792,800,789,25,19,15,23,960,963,969,967,1709,1702,1712,1714,-72,-85,-62,-72,-1879,-1870,-1855,-1887,528,549,560,547,936,938,940,942,-1641,-1650,-1642,-1658,-1312,-1296,-1308,-1324,198,191,169,174,602,590,591,601,-612,-634,-602,-609,-750,-753,-739,-732,-101,-104,-90,-106,281,283,293,284,443,432,454,449,220,204,228,230,-107,-119,-121,-109,519,509,517,514,-328,-331,-338,-329,-1285,-1301,-1300,-1295,-615,-637,-625,-630,1409,1405,1421,1426,1185,1182,1196,1183,-1562,-1561,-1561,-1560,-1027,-1050,-1055,-1047,210,193,195,194,-784,-801,-803,-794,-1277,-1289,-1290,-1292,-389,-392,-395,-395,-928,-936,-924,-937,-1394,-1384,-1371,-1385,-432,-435,-421,-426,-127,-123,-119,-123,247,256,241,238,-116,-109,-88,-87,427,424,419,421,-69,-87,-91,-91,511,501,496,499,-845,-869,-875,-862,-858,-871,-871,-866,-312,-319,-314,-321,-338,-347,-338,-324,-423,-445,-418,-420,-223,-234,-232,-234,-36,-49,-41,-48,-1693,-1672,-1669,-1684,-790,-780,-780,-789,136,127,124,124,551,560,561,540,-123,-138,-120,-118,3,-4,-11,-17,-27,-44,-47,-44,-602,-622,-594,-599,-552,-551,-534,-556,1254,1250,1259,1254,1111,1106,1121,1114,112,105,115,100,-592,-583,-593,-606,36,36,37,28,-237,-249,-232,-235,-1271,-1282,-1260,-1273,0,-12,-4,0,151,143,143,145,89,80,107,92,-413,-407,-388,-387,306,292,292,292,455,449,446,451,811,816,812,793,943,966,964,947,1414,1415,1438,1413,39,49,64,54,168,164,177,174,1346,1329,1339,1343,629,627,646,639,-734,-727,-727,-732,-718,-732,-734,-727,847,833,848,840,114,125,127,117,-1340,-1348,-1348,-1355,490,501,496,485,970,977,975,969,-584,-579,-565,-588,-119,-106,-113,-119,1359,1362,1358,1340,1792,1795,1778,1791,206,192,198,191,-91,-82,-79,-84,1356,1360,1375,1352,1580,1585,1584,1573,388,399,406,385,473,472,467,472,897,894,893,883,-224,-235,-242,-235,-638,-641,-640,-633,894,882,881,884,-367,-372,-374,-369,-1418,-1427,-1439,-1429,384,387,394,370,-1,10,23,-1,152,154,170,156,512,531,541,519,-933,-932,-911,-916,370,372,370,358,1059,1066,1065,1053,255,241,237,244,275,258,281,279,225,216,218,222,-170,-172,-179,-176,32,11,23,31,-35,-51,-50,-60,774,783,795,780,116,108,116,125,-1092,-1079,-1065,-1086,-64,-52,-38,-53,-742,-751,-750,-743,-599,-621,-619,-600,-1040,-1063,-1045,-1041,-343,-340,-338,-336,883,884,893,878,146,154,154,149,-887,-883,-876,-883,-184,-183,-183,-181,285,273,282,282,24,24,26,23,-176,-179,-197,-200,-460,-454,-450,-472,-99,-87,-79,-81,-542,-541,-546,-545,-225,-232,-218,-222,53,49,67,66,-10,-20,0,2,-108,-112,-90,-98,-217,-215,-206,-224,-214,-205,-196,-231,-665,-651,-657,-676,-505,-507,-507,-499,243,239,235,237,-261,-275,-279,-262,-800,-817,-809,-802,-957,-979,-980,-965,-412,-429,-424,-422,132,123,127,129,-284,-286,-296,-297,-771,-786,-778,-757,-860,-883,-870,-868,485,463,467,490,1817,1801,1797,1820,966,954,944,947,-260,-260,-267,-269,42,43,34,42,55,51,44,42,-364,-362,-342,-356,-323,-308,-296,-301,257,263,273,270,-38,-38,-30,-40,-1016,-1015,-1006,-1021,-721,-708,-706,-718,-28,-42,-28,-41,-239,-236,-238,-240,565,552,539,539,376,360,379,371,-742,-766,-750,-751,-404,-405,-389,-407,1422,1421,1425,1431,626,605,620,627,-1066,-1065,-1059,-1075,-48,-57,-52,-53,1395,1381,1374,1370,608,606,610,597,-629,-636,-631,-631,130,114,119,118,-61,-62,-73,-76,-446,-465,-458,-454,-336,-353,-343,-345,103,96,94,96,-254,-267,-260,-259,-188,-205,-197,-192,-283,-289,-282,-293,-474,-474,-473,-485,360,344,348,339,372,361,361,355,368,369,377,371,1364,1351,1355,1351,1244,1237,1252,1246,10,6,6,-10,-569,-567,-567,-575,557,554,567,541,712,713,718,700,-386,-380,-384,-406,-659,-663,-663,-672,77,67,84,79,-476,-467,-453,-483,-920,-916,-914,-925,301,282,294,297,-137,-148,-127,-128,-224,-230,-233,-219,287,271,283,280,196,183,186,204,355,324,339,349,430,414,435,428,-200,-201,-182,-197,308,315,296,293,-53,-71,-75,-65,248,239,237,225,354,350,365,349,-582,-601,-586,-593,-624,-630,-643,-649,593,589,586,586,552,545,559,567,-1441,-1439,-1428,-1439,-1495,-1504,-1498,-1515,30,34,32,24,331,324,338,320,-146,-131,-117,-133,-107,-112,-96,-109,-288,-283,-276,-296,-261,-253,-252,-256,-309,-313,-301,-311,84,66,84,66,121,122,126,118,383,382,400,392,-157,-168,-144,-142,-695,-709,-682,-687,-130,-131,-119,-136,-651,-643,-648,-661,-295,-307,-307,-320,-124,-132,-121,-131,-196,-207,-192,-199,-527,-527,-531,-528,-17,-27,-15,-18,261,263,255,250,-878,-877,-880,-896,-705,-712,-714,-715,-109,-109,-102,-103,427,433,438,433,-638,-642,-622,-634,-731,-735,-721,-722,-26,-11,-11,-28,1090,1071,1086,1097,70,68,67,63,-549,-551,-569,-575,-316,-311,-294,-322,-478,-461,-451,-468,440,434,446,436,-268,-262,-256,-265,-671,-660,-665,-683,166,157,159,153,-338,-335,-326,-353,-404,-398,-394,-406,-389,-381,-379,-391,30,13,30,33,220,231,242,236,239,230,249,247,506,511,514,515,-50,-73,-74,-74,201,207,206,183,-72,-75,-81,-92,189,191,191,176,525,515,504,520,475,471,486,468,26,41,46,21,200,205,203,199,-207,-219,-207,-203,-244,-264,-258,-256,-190,-203,-198,-196,557,549,564,565,329,321,330,334,-116,-123,-119,-120,-120,-131,-133,-124,-31,-52,-53,-37,-586,-605,-595,-590,107,113,114,96,706,717,709,692,1046,1055,1044,1037,-157,-156,-168,-175,-95,-102,-108,-101,58,51,71,67,921,932,959,942,62,62,80,76,-722,-734,-736,-734,1129,1123,1123,1120,716,713,722,700,-428,-429,-412,-426,-279,-283,-277,-282,288,274,283,275,-238,-237,-228,-247,7,-1,-8,0,572,548,552,555,585,571,582,583,16,-7,-2,-7,205,195,183,190,85,74,89,86,370,356,353,358,945,942,944,941,158,167,156,146,-11,0,-7,-29,-194,-178,-199,-208,559,555,565,553,403,404,416,408,-41,-23,-7,-28,-566,-552,-541,-551,48,55,58,60,-91,-92,-102,-94,-186,-201,-203,-197,97,78,67,86,-388,-391,-381,-404,-487,-492,-497,-484,-196,-207,-214,-212,310,304,304,304,274,285,290,277,-623,-622,-603,-614,-383,-372,-365,-365,714,722,723,706,-25,-14,-24,-27,-1044,-1046,-1032,-1043,-865,-864,-859,-854,305,308,299,295,-434,-444,-460,-460,-721,-715,-735,-725,-145,-139,-146,-137,-232,-234,-224,-221,-206,-209,-200,-198,-940,-948,-920,-921,-736,-733,-707,-724,456,461,457,453,-439,-432,-421,-432,-955,-939,-927,-934,-348,-343,-339,-344,-224,-212,-195,-215,-998,-985,-982,-983,-639,-643,-635,-632,-797,-807,-788,-787,-1181,-1189,-1192,-1193,-543,-547,-556,-546,-149,-144,-150,-152,-210,-212,-199,-207,-708,-698,-712,-717,-659,-668,-658,-658,-699,-697,-696,-710,-116,-101,-111,-123,-131,-134,-133,-140,-237,-238,-234,-224,-587,-592,-589,-594,-318,-313,-309,-325,-296,-283,-280,-319,44,59,66,40,-614,-606,-628,-632,-498,-497,-495,-502,-491,-482,-477,-497,-445,-431,-435,-446,-629,-628,-627,-640,-837,-819,-818,-829,-403,-403,-398,-408,-132,-148,-146,-137,-83,-87,-100,-105,369,372,364,369,-21,-32,-16,-17,-229,-244,-240,-232,192,193,193,180,107,109,98,104,-154,-174,-170,-168,-54,-60,-54,-51,-13,-16,-13,-12,619,603,613,607,101,101,128,123,-471,-457,-447,-469,-407,-402,-398,-414,519,520,518,510,335,318,324,324,-117,-122,-112,-112,159,155,176,165,607,600,617,613,206,201,217,208,-540,-550,-546,-554,634,635,642,637,1560,1553,1574,1572,291,300,317,297,126,131,121,118,624,612,611,613,1006,991,984,997,748,728,727,722,383,395,405,388,189,200,215,209,570,564,572,585,-2,-19,2,12,257,248,263,264,385,385,380,376,-80,-91,-106,-97,-50,-75,-61,-45,673,664,663,671,1003,992,994,997,746,748,750,736,341,339,338,342,558,553,559,555,578,574,584,586,817,802,813,808,-138,-161,-157,-145,61,39,39,44,446,436,457,457,227,215,224,224,132,119,143,142,34,30,54,43,563,542,565,557,465,468,481,481,-71,-85,-79,-67,-266,-281,-260,-271,153,144,145,146,58,39,46,41,89,98,94,72,271,262,256,251,-49,-47,-44,-53,-23,-18,-10,-19,-164,-169,-163,-175,176,170,181,162,288,289,274,263,165,154,154,155,-77,-102,-82,-68,-412,-430,-413,-422,-521,-521,-499,-519,68,64,80,72,17,-2,19,17,-500,-513,-507,-515,-258,-271,-259,-257,-214,-237,-206,-223,-214,-207,-202,-220,-503,-503,-505,-500,-303,-326,-312,-308,-130,-140,-147,-156,-623,-640,-637,-631,-310,-327,-312,-311,-266,-265,-257,-265,-95,-106,-80,-103,-535,-539,-534,-553,-583,-590,-585,-592,-169,-191,-192,-179,-74,-98,-83,-99,-74,-71,-71,-78,81,70,83,73,-756,-764,-761,-757,-727,-750,-741,-746,-137,-147,-139,-156,-290,-279,-272,-298,-609,-616,-618,-630,-298,-306,-309,-313,-524,-543,-539,-555,-620,-621,-620,-642,-530,-547,-525,-515,-371,-380,-363,-371,-484,-495,-484,-491,-217,-221,-211,-242,140,141,148,124,-167,-170,-156,-171,111,95,115,110,-546,-549,-554,-558,486,469,487,478,605,594,605,598,-438,-456,-448,-455,-399,-417,-400,-395,74,57,71,57,115,110,117,97,-600,-604,-588,-591,-904,-925,-899,-902,-501,-511,-496,-511,55,55,80,53,555,566,587,569,6,5,17,8,11,8,22,5,-264,-260,-264,-271,-66,-67,-59,-71,316,294,292,305,29,19,14,-2,-277,-285,-286,-289,631,620,623,605,583,576,574,571,71,58,71,67,118,107,117,118,-215,-221,-214,-236,200,197,199,188,367,370,358,351,490,481,467,469,168,152,148,157,-265,-271,-262,-266,-105,-105,-97,-118,154,157,159,156,521,506,515,511,136,146,153,123,-75,-68,-93,-94,236,216,202,211,292,283,285,277,-185,-188,-193,-195,638,627,625,633,597,599,599,581,-147,-144,-142,-156,-5,-14,-4,-23,441,430,453,442,437,436,441,427,77,60,79,75,366,359,364,354,386,382,402,408,189,177,188,188,-234,-232,-244,-246,-396,-389,-395,-407,470,467,460,456,592,583,591,584,-347,-352,-343,-342,-115,-136,-136,-134,489,472,482,482,134,131,134,132,-174,-182,-164,-171,181,196,201,186,269,276,283,283,76,84,77,86,-80,-96,-84,-96,-338,-339,-329,-330,55,42,55,50,62,53,54,44,69,55,70,70,62,54,54,46,207,203,195,195,250,241,238,221,-388,-367,-371,-388,-212,-225,-212,-205,-59,-89,-57,-51,31,26,59,45,-152,-137,-137,-144,-2,-21,-4,-6,-452,-465,-470,-471,-487,-493,-489,-505,-41,-43,-48,-45,212,200,214,225,-223,-250,-248,-224,-281,-306,-307,-314,-136,-122,-132,-140,-564,-578,-557,-561,-122,-123,-111,-122,-162,-149,-155,-164,-465,-476,-467,-471,-113,-114,-118,-127,142,138,136,129,74,81,72,75,-182,-192,-178,-185,-448,-449,-449,-452,-292,-284,-273,-286,272,279,288,269,460,460,482,481,-260,-267,-243,-250,-397,-401,-379,-383,118,130,143,135,230,223,219,227,-603,-626,-612,-610,-331,-337,-320,-321,220,200,218,227,-90,-88,-80,-88,-227,-206,-197,-218,-27,-42,-16,-1,-69,-99,-73,-79,-401,-408,-390,-397,263,259,263,257,93,94,86,82,-9,0,10,0,133,132,122,131,221,214,198,196,422,420,414,409,526,514,511,517,567,573,571,570,313,316,320,311,560,565,568,563,567,544,545,560,-23,-48,-18,-23,-425,-429,-419,-429,50,40,31,39,347,331,319,325,-35,-37,-32,-28,-97,-99,-87,-104,392,393,388,383,503,499,500,498,266,257,252,259,222,215,224,219,299,289,299,295,413,425,405,401,596,585,593,593,482,489,487,483,633,635,642,625,558,568,577,560,50,66,56,42,147,135,135,140,349,333,323,321,-173,-178,-180,-192,-274,-274,-279,-281,16,10,19,14,323,318,319,312,-150,-148,-158,-176,-303,-294,-301,-315,269,266,265,260,341,335,334,334,-113,-115,-118,-128,417,415,424,419,352,345,333,338,437,429,421,410,345,346,325,322,3,17,16,-6,273,286,283,281,-27,-29,-31,-16,-279,-305,-290,-276,16,-1,23,16,234,233,252,251,-550,-572,-523,-542,-572,-546,-549,-580,-353,-334,-336,-353,-278,-267,-276,-278,-201,-216,-195,-202,86,83,80,81,205,187,198,203,-220,-233,-228,-221,124,114,139,131,40,30,45,37,-252,-260,-267,-268,-104,-109,-120,-137,-44,-26,-35,-48,-185,-178,-170,-173,-315,-312,-302,-303,-655,-665,-665,-653,-517,-518,-515,-513,-625,-623,-610,-628,-572,-577,-589,-592,-276,-275,-265,-280,-251,-252,-252,-250,-484,-476,-471,-496,-643,-635,-631,-654,-110,-101,-121,-109,-8,-27,-24,-19,-10,-12,-26,-28,396,370,372,388,-336,-349,-357,-356,-718,-729,-735,-745,-77,-85,-90,-103,147,162,159,146,-583,-588,-584,-591,-1143,-1143,-1150,-1156,-449,-456,-455,-467,-242,-248,-253,-233,-324,-337,-328,-327,-618,-636,-621,-616,-657,-666,-639,-641,-533,-529,-526,-533,-122,-139,-138,-136,156,150,149,139,65,74,64,58,-139,-136,-153,-165,-331,-318,-346,-348,-283,-289,-283,-290,-516,-527,-497,-501,-183,-187,-177,-179,178,165,159,172,-465,-466,-457,-468,-525,-514,-497,-529,-179,-155,-160,-176,102,101,110,92,-207,-199,-206,-217,-381,-385,-386,-402,-89,-82,-93,-113,43,53,54,42,-112,-113,-105,-115,38,44,47,31,235,225,224,227,294,278,267,279,398,374,388,399,158,136,164,159,264,269,264,260,422,424,444,419,275,283,279,263,159,158,159,150,200,202,203,191,92,89,85,77,308,304,300,291,-15,-32,-35,-17,173,152,160,161,169,156,171,175,-59,-79,-51,-63,466,468,483,463,204,212,222,211,438,434,453,441,625,621,635,643,236,210,235,228,460,470,493,467,921,922,936,935,780,760,762,773,437,421,429,436,407,398,401,402,436,424,440,424,510,515,515,511,774,762,771,781,241,226,232,237,-389,-415,-409,-394,-167,-192,-178,-175,85,50,72,75,451,451,446,440,376,385,362,351,71,75,54,44,-157,-161,-161,-173,-22,-29,-26,-25,575,561,582,578,709,708,699,704,204,202,202,191,115,119,112,98,335,336,322,324,740,717,722,729,19,25,28,8,14,20,22,18,537,535,538,536,-90,-101,-109,-106,-254,-264,-261,-267,-189,-205,-206,-202,-400,-410,-418,-412,-482,-489,-490,-493,-582,-583,-575,-580,-236,-239,-223,-235,-165,-168,-178,-183,-280,-288,-276,-273,-260,-272,-257,-256,-378,-394,-386,-379,-157,-180,-179,-165,96,90,121,113,83,84,93,99,1,-16,-2,-2,-524,-546,-548,-547,-207,-223,-219,-231,452,437,440,450,-85,-99,-80,-85,-495,-499,-488,-505,-650,-659,-657,-659,-508,-518,-517,-526,-216,-214,-239,-252,-378,-386,-398,-397,-249,-261,-261,-277,-877,-883,-889,-898,-885,-885,-887,-891,-541,-543,-525,-550,-477,-466,-480,-492,-318,-325,-317,-319,-542,-550,-559,-562,-352,-353,-350,-347,19,5,23,38,17,-7,8,19,-211,-219,-220,-211,-471,-498,-486,-481,-195,-201,-185,-198,256,255,253,264,50,31,25,35,-542,-559,-564,-574,-597,-610,-617,-605,-447,-448,-447,-464,-577,-575,-577,-579,-399,-410,-387,-392,-517,-512,-505,-516,-602,-614,-595,-598,-443,-451,-433,-441,-152,-165,-153,-138,-190,-209,-190,-195,-452,-455,-438,-451,-536,-542,-530,-529,50,35,41,43,256,245,222,228,-88,-89,-75,-99,163,163,183,167,88,83,79,74,-62,-57,-54,-67,125,123,127,116,201,194,178,176,-197,-205,-210,-206,-402,-415,-423,-417,-276,-289,-286,-295,-48,-59,-49,-45,250,223,226,243,322,305,298,307,-53,-56,-56,-77,-162,-147,-165,-181,86,88,92,81,402,395,408,407,302,304,315,304,63,53,56,57,34,25,12,25,148,145,174,159,259,260,271,263,328,314,323,319,23,14,26,23,295,284,281,278,478,484,465,461,432,412,422,430,489,466,486,492,437,424,427,428,97,86,96,110,-44,-53,-45,-36,334,317,325,323,878,873,863,859,361,350,344,344,-280,-293,-275,-290,-149,-134,-153,-159,406,397,391,391,546,533,539,543,-119,-138,-133,-124,-533,-539,-528,-532,247,229,238,255,277,272,293,279,-97,-93,-85,-100,153,153,163,158,190,175,206,203,-18,-33,-25,-14,167,145,161,159,747,736,744,743,506,492,509,486,-257,-246,-259,-259,-346,-364,-352,-367,-82,-66,-81,-84,343,336,330,320,333,331,335,316,-113,-126,-123,-117,-318,-335,-329,-330,-110,-91,-102,-114,47,39,57,42,-245,-233,-230,-245,-78,-86,-65,-73,-262,-252,-244,-263,-51,-40,-28,-43,124,137,136,122,-104,-110,-105,-112,-220,-208,-207,-222,-224,-228,-234,-226,-273,-288,-274,-285,206,222,225,190,342,369,343,329,-21,-17,-11,-24,0,-8,-3,6,-226,-236,-215,-231,-247,-235,-213,-230,-60,-71,-65,-71,99,96,98,89,-229,-224,-235,-246,-180,-192,-189,-182,-176,-188,-176,-187,-149,-136,-149,-156,-173,-171,-188,-185,-592,-606,-622,-604,-19,-30,-24,-19,32,25,25,16,-150,-156,-174,-172,-364,-372,-369,-365,-104,-105,-106,-104,-8,-22,-10,-13,-172,-168,-155,-161,73,59,73,72,394,385,381,379,224,226,218,212,69,73,71,55,-57,-41,-57,-62,-373,-372,-369,-390,-121,-108,-111,-131,61,49,54,58,-219,-233,-233,-226,-37,-34,-29,-41,-37,-41,-60,-55,-302,-319,-325,-322,-163,-188,-193,-199,432,434,420,416,219,219,196,189,27,25,17,7,195,213,208,187,141,147,161,146,22,12,33,28,-21,-20,-19,-27,133,143,145,125,-134,-128,-119,-121,-88,-92,-86,-93,189,192,186,175,23,27,34,24,-56,-50,-29,-39,201,192,203,207,186,182,195,176,188,202,213,189,252,256,253,255,-85,-89,-87,-96,110,106,111,101,30,45,55,34,-94,-84,-69,-77,-84,-90,-91,-98,34,23,16,16,188,176,177,173,41,38,30,33,9,-5,-2,-10,514,505,515,503,287,277,274,264,-153,-155,-146,-168,-32,-13,-21,-27,220,203,200,215,120,121,130,107,77,70,86,84,-160,-178,-172,-173,-170,-183,-166,-181,0,0,1,-12,426,429,435,419,431,428,411,398,-86,-82,-100,-103,-167,-185,-177,-182,-337,-327,-328,-331,43,42,56,44,216,201,215,226,-46,-65,-48,-49,-402,-400,-388,-397,-245,-244,-257,-251,235,220,217,217,211,203,219,196,127,129,140,138,-244,-253,-240,-238,-261,-274,-273,-274,-23,-14,-9,-30,27,30,54,28,-134,-118,-115,-127,-246,-243,-245,-253,-378,-369,-348,-365,-363,-351,-353,-364,-242,-234,-231,-239,25,18,18,13,-140,-156,-148,-149,-673,-663,-649,-657,-344,-350,-329,-321,-27,-34,-29,-33,-128,-128,-125,-156,-221,-212,-216,-247,-337,-322,-325,-332,-528,-531,-516,-530,-266,-263,-245,-261,157,152,142,150,-14,-36,-31,-35,-241,-235,-222,-235,-183,-192,-206,-207,-32,-49,-35,-40,-105,-99,-76,-96,-11,-12,-2,-13,-255,-243,-250,-252,-393,-399,-389,-399,-293,-295,-288,-300,-7,-9,-21,-23,191,197,190,184,-293,-301,-305,-309,-435,-423,-444,-452,-355,-354,-352,-379,120,123,119,112,146,141,126,140,-240,-255,-257,-256,-54,-58,-62,-62,133,136,147,131,29,22,27,35,-198,-212,-211,-198,190,174,176,184,441,422,427,440,174,168,179,178,201,199,195,189,293,281,280,288,214,203,204,196,-134,-128,-118,-132,-533,-520,-533,-533,-298,-312,-319,-303,-69,-95,-102,-88,-235,-235,-222,-235,-91,-89,-87,-99,200,194,176,180,103,91,94,83,-234,-236,-232,-252,-165,-175,-172,-166,305,283,296,308,206,183,212,212,-22,-37,-30,-16,94,84,95,86,176,173,189,183,146,145,153,147,-138,-140,-136,-142,93,96,92,89,31,31,52,51,-41,-46,-34,-44,-154,-158,-143,-149,-142,-150,-130,-134,-64,-73,-53,-62,-108,-108,-105,-114,-126,-123,-134,-135,155,150,154,149,183,170,174,174,159,144,139,146,235,234,239,232,206,188,203,201,114,108,100,99,16,5,15,25,212,187,215,214,158,156,177,170,41,28,33,33,7,13,13,-3,-162,-167,-150,-167,-226,-211,-204,-227,-134,-136,-133,-148,245,247,248,247,186,156,174,189,-213,-220,-200,-207,72,73,81,77,498,487,497,502,434,428,439,433,42,46,45,31,-54,-53,-53,-57,-228,-235,-224,-232,-33,-42,-27,-32,137,128,138,138,168,166,170,163,83,77,94,80,-356,-344,-331,-343,-254,-259,-250,-242,106,100,116,110,9,-8,7,16,-48,-62,-46,-52,-205,-201,-184,-198,-79,-93,-78,-85,70,56,67,65,-4,-12,-9,-12,-49,-56,-40,-40,-38,-49,-48,-51,66,66,59,50,144,137,148,140,51,59,59,52,-6,-20,-18,-1,-385,-395,-380,-385,-538,-540,-524,-546,-244,-229,-238,-242,-9,-15,4,-1,-25,-26,-39,-26,-176,-184,-174,-187,-393,-396,-383,-395,-475,-460,-461,-471,-193,-202,-199,-197,-115,-116,-106,-114,-245,-250,-254,-256,-190,-185,-171,-193,58,61,48,51,191,186,176,178,72,50,30,42,67,68,58,39,-68,-64,-61,-60,-198,-210,-197,-200,-132,-132,-127,-127,131,127,138,129,-8,-3,15,-6,-305,-292,-283,-310,-281,-280,-275,-282,-310,-311,-323,-321,-280,-296,-282,-283,-193,-197,-172,-193,-139,-126,-124,-134,-193,-191,-180,-207,-411,-413,-416,-427,-46,-36,-36,-57,328,324,332,317,193,203,206,192,1,-4,9,-7,24,26,33,28,165,157,170,163,151,139,165,168,-132,-142,-121,-133,-47,-41,-27,-31,66,78,98,82,-23,3,8,-13,25,31,14,5,117,119,104,109,-1,-29,-16,-16,-124,-133,-135,-130,-318,-341,-327,-315,-195,-218,-212,-206,-153,-164,-144,-160,-9,-4,6,-13,104,108,110,106,32,26,22,21,138,121,136,141,259,245,250,256,220,204,214,198,143,148,141,122,58,69,67,50,171,163,154,165,119,102,131,128,-141,-148,-131,-144,-46,-45,-40,-54,112,110,109,111,-46,-54,-54,-60,-258,-263,-269,-286,-188,-180,-192,-186,10,-11,8,1,116,131,122,97,60,66,48,52,171,154,168,170,17,13,15,14,-209,-209,-213,-208,110,102,115,116,269,260,276,271,-106,-114,-100,-104,-174,-179,-154,-153,150,149,177,169,110,112,117,109,-277,-269,-287,-305,-353,-350,-372,-383,72,71,64,42,99,104,93,96,-117,-126,-140,-139,-205,-208,-212,-218,-421,-426,-426,-432,-127,-142,-146,-135,-51,-54,-51,-59,-152,-143,-159,-166,-246,-252,-242,-261,1,8,13,3,111,118,124,109,-53,-43,-29,-50,-53,-44,-60,-62,-211,-220,-216,-217,-383,-381,-379,-391,-196,-194,-183,-197,77,77,83,78,216,204,208,205,-70,-76,-61,-73,-373,-380,-364,-360,-306,-314,-309,-308,-108,-112,-102,-112,-54,-56,-45,-51,-330,-347,-342,-333,-296,-311,-317,-302,-328,-346,-322,-330,-98,-96,-79,-80,248,241,263,261,-100,-101,-81,-108,-417,-406,-392,-405,-249,-247,-250,-251,95,88,101,89,280,289,281,265,-182,-193,-183,-195,-437,-429,-428,-446,-184,-189,-180,-179,-93,-99,-75,-87,-57,-56,-53,-54,-153,-169,-163,-155,-340,-365,-351,-337,-201,-218,-211,-216,66,59,43,38,-11,-14,-25,-28,-138,-135,-144,-163,-198,-201,-222,-216,-219,-227,-226,-219,-237,-249,-244,-231,-52,-75,-54,-51,82,77,94,86,-38,-53,-34,-36,-172,-157,-156,-180,-36,-28,-27,-35,122,113,116,129,109,89,111,113,-54,-62,-60,-60,-104,-99,-95,-108,-47,-49,-64,-72,4,4,-11,-24,231,227,214,218,-32,-45,-43,-33,-277,-287,-285,-294,-97,-82,-91,-97,90,90,103,99,143,128,155,146,-57,-52,-33,-48,-34,-45,-30,-22,50,28,37,30,-48,-54,-55,-68,-19,-17,-17,-26,127,111,114,117,18,-3,1,13,56,45,51,51,211,215,224,221,264,261,281,285,153,132,157,162,21,14,38,35,14,8,20,13,95,94,83,98,319,308,308,304,161,162,160,145,156,160,163,155,217,218,224,216,-124,-141,-129,-141,-148,-147,-148,-165,188,172,189,193,220,218,222,200,98,119,124,84,-3,4,16,12,237,242,251,247,322,315,313,320,-186,-198,-177,-195,-161,-161,-161,-164,177,176,167,159,333,325,313,322,203,198,201,193,189,181,211,194,73,75,86,89,-142,-150,-153,-152,-36,-47,-35,-35,53,45,53,51,50,49,50,50,-199,-217,-207,-199,-156,-172,-154,-155,-149,-162,-153,-156,-82,-99,-86,-79,9,-8,1,10,155,142,152,143,86,81,85,79,228,220,228,226,210,215,221,197,-96,-89,-80,-87,-84,-99,-103,-99,-125,-143,-145,-133,-215,-228,-220,-223,-136,-141,-130,-144,24,9,6,5,-75,-87,-101,-87,-212,-245,-221,-214,-236,-252,-243,-236,-207,-230,-234,-219,-129,-155,-138,-133,-7,-20,-4,-8,50,40,57,42,-267,-270,-263,-268,-246,-255,-246,-243,-181,-202,-192,-198,-153,-163,-165,-176,83,72,71,68,96,76,83,90,4,-2,29,20,-107,-102,-79,-98,31,29,21,8,236,243,241,222,15,28,35,22,-276,-293,-295,-294,-214,-222,-230,-238,-102,-120,-142,-140,-162,-161,-173,-193,-293,-293,-294,-307,-517,-519,-509,-528,-246,-237,-234,-241,42,32,25,28,-81,-95,-98,-94,-211,-234,-219,-221,-110,-110,-114,-111,86,86,74,66,-10,-15,-18,-10,-54,-65,-45,-56,12,-1,14,7,92,97,104,74,121,142,144,131,161,148,165,155,-22,-23,-7,-27,-143,-139,-145,-139,-171,-182,-163,-156,-169,-186,-151,-162,25,27,34,26,-23,-30,-17,-38,-406,-400,-406,-418,-423,-426,-406,-403,-185,-202,-193,-187,16,2,12,2,158,151,146,145,213,211,225,222,11,7,-9,-3,-226,-250,-251,-248,-33,-42,-49,-24,155,124,127,139,179,167,187,174,27,23,37,15,15,26,34,4,110,114,115,107,74,59,71,60,101,103,102,103,-24,-31,-30,-33,-254,-252,-241,-254,-250,-251,-249,-251,46,33,48,29,54,55,60,46,30,22,40,43,-114,-116,-114,-123,-14,-16,-14,-19,103,97,92,95,75,66,57,50,33,39,31,23,32,25,43,34,60,64,62,46,-16,-26,-26,-43,149,151,161,144,238,240,256,237,31,41,50,37,-229,-221,-216,-228,28,10,22,33,-61,-87,-60,-58,-86,-88,-71,-80,140,134,143,147,11,-5,8,19,-17,-22,0,-3,4,2,17,10,197,188,186,194,149,129,129,139,-57,-65,-65,-73,-92,-101,-96,-89,88,65,84,95,155,130,143,165,4,-12,-5,2,-144,-153,-141,-138,-168,-175,-162,-164,11,2,-7,3,-43,-48,-56,-63,-94,-101,-112,-116,-241,-239,-235,-246,120,118,123,106,139,150,165,133,-140,-113,-121,-140,-159,-163,-156,-149,132,127,135,119,342,354,352,337,156,147,146,155,119,98,108,115,-15,-21,-20,-40,-82,-77,-86,-102,-126,-132,-134,-143,303,296,301,293,223,221,229,226,-169,-170,-162,-176,-157,-157,-161,-154,26,16,14,16,-207,-198,-202,-207,-168,-174,-178,-175,118,104,104,106,54,62,64,52,4,8,16,-1,-56,-44,-55,-66,43,29,42,32,-27,-19,-30,-32,181,167,167,180,199,195,193,188,70,67,66,64,76,67,56,72,154,128,134,150,129,123,125,112,-151,-148,-136,-150,-239,-234,-228,-233,-63,-81,-69,-72,38,44,43,28,178,164,159,163,-9,-25,-19,-31,-92,-90,-79,-95,-45,-40,-51,-54,111,102,102,101,130,130,137,127,383,381,379,382,384,376,380,379,115,119,126,112,-89,-72,-77,-100,-8,4,-5,-18,171,170,169,158,-71,-62,-65,-77,-290,-286,-283,-301,-141,-134,-118,-137,74,78,94,71,227,235,252,228,262,252,261,257,109,107,112,99,126,111,120,110,140,128,136,128,100,103,106,90,26,27,35,34,-89,-98,-97,-102,52,38,46,47,164,146,155,153,235,239,239,231,-30,-47,-30,-16,-158,-187,-166,-173,-91,-79,-76,-96,-198,-206,-190,-200,-76,-85,-78,-89,298,291,308,290,425,415,423,418,89,91,96,86,-198,-196,-195,-205,-89,-98,-89,-98,99,109,120,104,35,32,48,35,162,162,171,155,190,197,197,177,29,24,16,17,-201,-195,-209,-211,-157,-184,-185,-168,36,21,35,37,-39,-41,-28,-27,-137,-143,-135,-136,-179,-172,-156,-174,-1,-11,15,7,-25,-18,-17,-28,-23,-29,-35,-9,-114,-141,-131,-126,-254,-255,-223,-236,20,9,26,25,239,218,230,231,329,324,333,324,1,0,0,-1,-363,-389,-385,-384,-362,-367,-387,-409,28,41,51,27,72,70,86,72,-176,-168,-165,-171,-277,-296,-285,-268,-270,-296,-269,-258,-103,-130,-126,-120,-176,-185,-201,-197,-131,-145,-146,-157,-53,-52,-36,-56,-103,-94,-96,-105,-16,-10,-11,-24,185,180,189,190,296,281,293,290,-57,-64,-58,-58,-361,-373,-382,-366,-36,-59,-52,-61,87,85,112,100,-165,-163,-148,-158,-250,-250,-242,-260,-277,-275,-277,-275,-451,-463,-454,-451,-407,-410,-400,-402,-182,-189,-173,-174,101,99,110,129,142,127,153,140,-17,-22,-12,-11,-76,-70,-67,-84,234,230,215,216,379,377,376,368,173,181,186,175,-119,-114,-115,-122,-189,-191,-191,-211,55,65,59,39,141,135,142,136,69,77,84,79,-59,-81,-72,-66,-424,-446,-434,-441,-370,-368,-363,-368,-22,-24,-24,-40,3,4,-7,-36,-220,-200,-201,-212,-301,-309,-296,-299,-57,-63,-71,-77,110,110,93,91,134,131,119,111,138,152,154,133,-183,-172,-156,-174,-68,-75,-63,-64,381,381,397,367,490,501,503,496,223,208,198,202,-160,-184,-184,-168,-216,-242,-225,-224,-159,-165,-144,-151,-72,-91,-72,-70,130,121,115,130,14,-7,-3,-1,-152,-153,-159,-155,-81,-97,-75,-86,-31,-35,-21,-36,1,-18,-5,-8,-33,-47,-35,-36,-193,-195,-178,-208,-171,-162,-159,-176,265,266,274,264,408,404,421,408,82,83,77,75,-8,-22,-14,-10,88,67,66,72,289,281,285,273,213,205,211,216,144,125,134,139,-38,-48,-44,-47,-209,-219,-192,-205,-29,-24,-18,-26,12,2,4,16,-77,-98,-90,-88,-227,-244,-244,-239,-47,-64,-56,-53,166,167,162,155,80,86,87,79,-80,-85,-90,-109,-142,-136,-131,-147,212,200,197,191,252,241,257,252,99,108,119,102,-75,-62,-56,-74,-331,-318,-326,-333,-245,-252,-262,-255,211,193,197,213,285,290,304,278,23,37,54,26,-45,-34,-36,-61,274,271,276,288,37,25,50,49,-190,-199,-190,-191,-224,-230,-224,-222,-213,-227,-225,-215,-102,-118,-106,-97,104,87,99,101,139,138,143,143,-133,-143,-144,-138,-306,-311,-301,-301,-127,-123,-101,-123,131,135,134,141,51,55,50,42,-151,-164,-165,-163,-244,-257,-252,-249,-189,-189,-199,-206,64,63,53,38,171,185,189,171,-11,-14,-10,0,-66,-89,-58,-46,-52,-77,-47,-50,-68,-81,-60,-58,-15,-21,-10,-18,144,143,145,147,31,19,5,4,-231,-242,-241,-242,-90,-93,-93,-99,41,50,47,42,31,22,42,21,-239,-246,-252,-244,-354,-369,-351,-346,-79,-89,-70,-81,245,254,255,242,244,234,262,261,-78,-90,-87,-85,-342,-349,-334,-342,4,12,30,12,302,308,317,301,370,372,367,379,-15,-36,-17,-30,-279,-279,-287,-305,-150,-129,-136,-159,118,116,117,115,336,322,340,345,201,195,200,197,-92,-90,-85,-96,-194,-194,-197,-199,-92,-100,-82,-81,211,209,198,201,55,55,52,48,-221,-223,-215,-218,-167,-173,-160,-183,143,161,161,142,556,573,562,542,380,376,361,343,-137,-129,-130,-138,-260,-269,-236,-238,83,77,66,61,471,478,470,470,213,216,204,193,-279,-265,-263,-275,-275,-271,-283,-276,134,125,122,122,306,308,316,294,289,290,306,293,139,131,126,121,-277,-283,-264,-273,-131,-136,-126,-132,377,378,390,370,348,354,346,354,-80,-92,-87,-92,-287,-296,-290,-292,192,204,187,176,497,493,483,480,255,249,245,238,-7,-10,7,-8,-205,-205,-202,-207,-101,-107,-112,-110,207,195,222,215,290,280,293,300,164,145,145,161,-103,-118,-95,-103,-133,-143,-131,-135,-18,-28,-18,-29,146,142,143,139,42,43,40,38,-339,-343,-337,-337,-415,-411,-403,-411,154,153,138,144,364,347,361,358,-22,-20,-7,-15,-181,-192,-176,-179,-109,-119,-104,-113,51,35,42,50,131,114,125,128,32,29,37,27,-63,-48,-32,-51,-129,-124,-121,-121,-130,-144,-131,-128,64,45,57,54,168,158,184,174,-95,-97,-94,-118,-365,-352,-371,-387,-192,-201,-200,-201,43,43,51,40,213,210,213,207,-120,-140,-133,-121,-405,-430,-422,-414,-181,-183,-172,-187,-30,-28,-28,-36,175,161,188,184,232,219,231,223,-35,-26,-30,-36,-154,-161,-159,-163,-8,-17,-21,-16,187,169,188,194,172,165,170,174,7,5,14,-10,68,71,89,82,68,46,67,75,58,43,48,56,-51,-63,-63,-58,-172,-191,-194,-187,-191,-198,-200,-206,7,-1,-6,-17,65,81,96,75,40,43,62,32,-25,-24,-19,-31,-241,-256,-253,-265,-132,-124,-124,-140,-11,-1,-11,-24,26,10,9,17,111,106,104,82,194,205,192,180,3,1,9,0,-213,-217,-209,-226,-70,-65,-66,-81,136,120,118,131,78,66,57,63,-114,-117,-114,-124,4,-4,10,7,168,156,174,171,-103,-124,-121,-100,-250,-284,-255,-247,62,55,79,76,169,166,172,159,-164,-149,-146,-157,-337,-345,-340,-343,-41,-41,-38,-55,21,27,19,22,-223,-236,-214,-215,-200,-188,-184,-200,141,140,141,148,115,109,120,104,-130,-130,-116,-119,-119,-132,-112,-104,22,16,21,22,101,102,94,84,221,222,237,231,93,100,114,109,-72,-77,-59,-69,0,9,27,24,126,102,113,137,143,119,129,117,80,90,81,76,-262,-268,-262,-267,-236,-233,-234,-237,2,-9,0,6,98,100,97,78,-68,-50,-43,-52,-219,-226,-223,-215,-69,-81,-60,-76,81,97,105,103,91,90,108,108,109,85,94,114,105,85,103,94,-15,-9,-7,-23,-2,-9,-3,2,250,237,248,257,367,363,385,374,231,231,252,246,-9,-11,-20,-22,-1,-10,-31,-28,201,194,188,194,346,329,333,337,20,12,30,26,-234,-241,-234,-245,-263,-256,-256,-271,-103,-104,-100,-108,206,211,203,195,75,64,56,65,-278,-297,-297,-283,-240,-268,-263,-253,224,200,204,203,283,273,280,283,106,99,103,101,92,93,99,81,98,103,100,99,-20,-30,-23,-13,119,107,112,120,223,204,209,206,71,82,85,75,-223,-225,-218,-226,-203,-209,-213,-218,227,215,221,222,48,42,38,43,-251,-253,-246,-259,-235,-232,-235,-238,-112,-133,-128,-123,10,-2,1,10,26,11,35,27,-87,-89,-82,-80,-80,-91,-89,-93,-128,-122,-134,-130,-46,-47,-52,-61,194,204,197,181,423,409,410,411,-11,-34,-32,-27,-252,-275,-262,-263,46,39,29,32,173,178,184,160,-78,-78,-72,-64,-113,-136,-115,-113,34,10,19,32,-187,-195,-186,-186,-189,-199,-173,-181,-97,-105,-89,-86,-77,-81,-63,-66,-179,-190,-183,-191,51,39,48,57,119,117,130,117,59,47,67,68,66,66,88,88,-14,-22,-21,-23,-78,-76,-94,-103,38,33,30,34,364,351,366,364,357,349,372,348,-72,-70,-64,-62,-260,-258,-241,-254,-112,-110,-103,-111,-27,-28,-20,-28,-79,-96,-91,-79,-71,-84,-70,-71,-9,-13,-16,-37,-54,-52,-75,-65,-241,-271,-265,-262,-180,-216,-205,-203,-15,-19,-13,-16,183,169,184,180,253,243,249,259,189,173,186,185,65,72,78,56,-110,-109,-101,-104,-399,-405,-414,-404,-283,-289,-290,-299,-18,-14,-12,-28,204,204,222,211,-43,-51,-50,-56,-338,-350,-345,-352,-133,-131,-127,-139,-53,-61,-48,-61,-190,-184,-184,-208,-144,-133,-140,-148,190,161,177,192,124,117,141,136,-225,-214,-190,-217,-272,-253,-236,-259,-78,-72,-74,-85,-7,-18,-21,-15,108,104,104,93,126,123,113,105,-55,-73,-71,-59,-67,-79,-73,-71,-43,-61,-36,-39,-75,-82,-73,-88,-7,-1,-6,-11,-54,-59,-50,-56,-309,-311,-319,-322,-264,-274,-262,-265,-73,-98,-75,-77,66,65,87,64,-55,-50,-44,-49,-55,-54,-45,-64,120,125,146,144,83,67,56,75,-114,-131,-131,-144,-61,-63,-53,-75,-124,-120,-130,-129,-191,-210,-204,-207,122,118,124,129,172,156,155,160,-135,-149,-148,-139,-226,-253,-226,-235,-122,-132,-118,-109,-2,-19,-20,-9,67,47,58,56,134,144,155,141,-64,-81,-68,-83,-216,-208,-215,-224,-112,-113,-130,-141,-60,-73,-85,-72,-69,-75,-80,-81,102,85,100,99,114,104,118,109,23,31,28,11,68,60,70,72,3,-16,-11,-7,-174,-194,-171,-172,-47,-39,-35,-42,193,167,169,192,202,167,192,207,128,118,115,113,-19,-31,-38,-45,-280,-279,-285,-297,-264,-268,-265,-263,-50,-57,-39,-62,54,63,71,62,46,34,39,30,-38,-34,-31,-43,-145,-150,-159,-167,-242,-253,-270,-264,-156,-162,-152,-172,58,57,65,50,149,153,158,135,33,26,23,24,159,150,144,152,263,250,263,257,238,251,250,237,28,18,16,18,-85,-92,-90,-93,-17,-21,-18,-27,85,92,93,93,67,57,69,57,-194,-200,-205,-199,-311,-309,-299,-322,-173,-176,-159,-166,-1,2,8,-1,227,222,236,225,80,78,67,83,-157,-173,-163,-167,-207,-208,-207,-215,-45,-52,-58,-66,93,99,110,100,264,264,277,272,186,181,184,164,-17,-4,1,-27,48,47,44,49,181,162,171,162,8,12,13,-1,-199,-192,-185,-192,-28,-29,-26,-34,-173,-191,-176,-172,-258,-269,-273,-270,-129,-145,-166,-151,12,9,6,-2,-234,-229,-236,-245,-276,-269,-279,-291,63,65,78,60,85,86,96,95,-81,-98,-76,-77,20,5,30,24,79,73,88,87,123,111,126,132,106,96,110,113,58,42,48,53,88,75,83,76,15,12,19,13,-123,-122,-116,-129,-140,-137,-127,-133,-126,-120,-108,-133,-210,-206,-214,-207,-226,-234,-223,-231,-72,-90,-88,-78,55,49,67,50,-205,-194,-181,-198,-295,-300,-286,-285,-73,-85,-73,-78,230,227,233,218,215,223,215,201,10,16,-6,-26,42,49,40,41,-31,-23,-14,-27,103,98,110,118,104,86,84,93,9,6,-2,-3,-145,-136,-139,-138,-224,-221,-225,-235,-270,-260,-271,-288,-124,-129,-132,-142,15,18,-2,-1,-75,-91,-101,-91,-212,-211,-207,-227,-7,-2,-14,-36,130,135,145,133,-17,-27,-5,-12,3,8,7,-8,-189,-191,-188,-190,-179,-180,-168,-180,139,130,117,112,338,344,336,326,212,217,208,193,-236,-221,-224,-250,-355,-353,-354,-350,-109,-113,-130,-126,209,195,179,197,59,41,39,29,-297,-295,-308,-311,-415,-419,-403,-427,-137,-133,-120,-133,126,132,149,127,158,172,158,150,-90,-90,-93,-106,-155,-151,-140,-141,40,35,44,32,213,208,200,211,173,162,170,185,50,42,50,40,-110,-118,-105,-108,-136,-143,-145,-153,34,35,31,20,125,124,118,126,-47,-62,-53,-45,-268,-282,-266,-269,-295,-305,-293,-308,-205,-193,-188,-221,29,34,0,4,77,63,69,80,34,19,31,32,-27,-44,-31,-27,-2,-15,6,15,265,248,272,278,262,257,258,256,-20,-7,-12,-29,-59,-65,-55,-68,282,270,271,267,487,478,488,482,331,324,334,323,-91,-95,-98,-94,-375,-386,-377,-386,-284,-283,-297,-298,-6,-15,-14,-21,-20,-18,-17,-13,-120,-141,-128,-129,-146,-142,-118,-121,-149,-165,-147,-140,66,47,51,56,306,294,298,291,47,42,57,39,-12,-7,-4,-14,131,130,154,142,70,74,104,91,-10,-6,6,9,143,113,113,135,283,271,265,264,-1,6,-4,-27,-34,-37,-38,-39,167,172,175,166,-24,-17,-10,-29,-179,-167,-152,-164,-332,-341,-342,-325,-198,-205,-190,-191,-74,-86,-65,-63,-17,-20,-11,-8,-42,-52,-48,-44,-148,-155,-139,-169,-122,-102,-112,-125,-92,-76,-61,-69,134,134,157,157,292,289,309,304,82,87,100,103,11,0,6,11,222,206,212,210,368,367,362,360,118,106,117,104,-213,-221,-225,-214,-212,-223,-212,-230,-20,-18,-22,-36,43,35,25,23,-171,-184,-181,-185,-364,-371,-369,-384,-328,-332,-321,-327,-181,-206,-181,-175,-55,-53,-51,-65,-10,-9,3,-20,-131,-129,-111,-124,-86,-76,-56,-79,-100,-82,-67,-89,56,53,64,65,399,379,409,405,304,296,308,320,12,1,1,-3,25,22,32,17,299,308,306,283,221,235,249,225,-110,-118,-115,-106,-451,-475,-459,-460,-368,-374,-351,-359,-8,-4,14,-4,70,70,64,60,-204,-205,-208,-223,-398,-396,-391,-397,-318,-320,-302,-302,-107,-133,-96,-95,242,242,238,224,111,122,107,91,-203,-195,-189,-207,-167,-159,-157,-168,204,203,202,192,282,281,287,278,105,115,106,90,67,75,79,52,28,44,54,28,-6,0,1,-14,5,14,3,7,-77,-93,-76,-80,-326,-309,-311,-339,-427,-412,-405,-413,-41,-54,-25,-38,46,55,64,52,-178,-176,-154,-155,-186,-187,-174,-180,-29,-30,-11,-20,-84,-79,-81,-89,-67,-67,-79,-80,149,141,140,145,255,239,233,238,24,15,0,-1,89,76,83,70,318,321,324,306,177,178,186,174,-56,-57,-67,-60,-196,-200,-209,-220,-2,-11,-15,-11,57,33,43,42,-115,-114,-108,-112,-255,-277,-258,-258,-225,-231,-236,-237,8,-12,-13,-9,212,196,208,197,151,151,172,167,60,50,65,59,-40,-54,-35,-44,68,60,69,58,95,87,94,84,234,232,229,224,162,150,169,164,-80,-95,-80,-67,-77,-91,-80,-68,215,182,203,218,152,154,179,169,-125,-114,-108,-133,-130,-124,-118,-120,32,22,15,30,183,165,147,165,154,143,141,144,122,99,91,111,-69,-83,-69,-66,-245,-262,-236,-236,-149,-137,-127,-139,216,223,222,206,244,247,225,227,-57,-54,-71,-90,-67,-69,-76,-85,12,-2,-2,2,95,81,83,85,152,144,151,155,29,26,43,39,-225,-228,-209,-221,-69,-77,-45,-45,141,152,150,133,129,128,109,105,-6,-11,-18,-15,-118,-124,-128,-131,-102,-116,-113,-122,-114,-105,-99,-117,-41,-18,-29,-35,-76,-79,-87,-81,-166,-165,-154,-163,-105,-111,-97,-101,67,75,82,61,242,237,246,251,52,34,41,51,-169,-167,-182,-204,-162,-155,-168,-176,107,107,92,93,222,228,233,228,85,74,78,80,35,26,30,24,-133,-141,-137,-134,-262,-264,-258,-266,-184,-179,-178,-191,-43,-45,-57,-58,46,37,54,45,-75,-70,-50,-68,-99,-86,-77,-88,82,82,85,76,33,32,31,33,-71,-72,-52,-54,-63,-62,-43,-54,-14,-5,2,-19,60,53,64,55,75,58,67,63,108,104,98,89,-58,-60,-57,-66,-171,-179,-184,-178,-9,-10,-18,-32,191,188,201,189,98,97,108,94,-207,-200,-203,-223,-198,-213,-210,-202,-77,-88,-73,-78,51,53,65,53,-142,-128,-120,-157,-123,-103,-105,-117,-12,-12,1,-20,42,42,51,36,130,134,133,138,-19,-35,-34,-36,-98,-103,-111,-100,-100,-110,-103,-99,-39,-40,-15,-25,154,150,174,159,43,49,56,50,-44,-47,-47,-38,-51,-54,-60,-61,99,94,93,84,46,40,28,35,-173,-188,-179,-182,-186,-198,-200,-209,-97,-108,-98,-116,6,3,3,-3,-44,-51,-49,-56,-190,-190,-180,-197,-131,-124,-124,-128,-50,-79,-64,-52,-18,-12,3,0,43,23,44,29,-137,-128,-120,-146,-150,-140,-153,-154,118,99,131,129,295,291,318,311,156,152,142,135,-53,-63,-53,-62,-214,-222,-217,-212,-203,-223,-221,-208,-6,-20,-19,-11,300,288,291,286,158,151,141,144,-224,-231,-234,-236,-315,-320,-308,-327,-61,-62,-72,-83,2,-2,-13,-13,-30,-47,-38,-39,-108,-111,-98,-113,-62,-61,-69,-74,-35,-37,-19,-24,94,92,95,86,229,211,220,222,0,-5,14,2,36,29,39,41,207,200,209,205,264,262,263,254,147,152,144,147,-93,-115,-100,-106,-252,-263,-260,-265,-154,-162,-166,-166,229,230,225,220,247,238,248,236,30,27,37,23,-257,-255,-242,-239,-325,-330,-319,-319,-89,-103,-100,-122,110,117,103,91,185,182,179,172,49,41,64,47,-234,-220,-211,-223,-11,-31,-28,-21,299,299,317,297,239,229,240,230,-33,-31,-23,-30,-205,-204,-209,-215,24,14,31,15,310,308,314,319,275,262,267,268,-56,-76,-63,-56,-459,-464,-449,-468,-377,-372,-357,-369,-34,-30,-41,-38,209,191,186,191,-3,-3,-23,-19,-6,-19,2,-18,-30,-20,0,-5,-9,-35,-20,-4,3,-13,-15,-27,-14,-1,-2,-24,-24,-1,-10,-23,-13,-14,-12,-10,-13,-23,-11,-8,-7,-20,-7,-10,-4,-18,-15,-10,-11,-26,-19,-12,-5,-18,-31,0,-9,-23,-8,-14,-21,-10,1,-19,-13,-16,-15,-12,-14,-17,-22,-19,-2,-5,-23,-31,5,-11,-12,-11,-10,-18,0,-21,-22,-15,8,-12,-18,-25,-1,-11,-19,-17,-14,-12,-7,-22,-22,-12,1,-9,-19,-5,-2,-24,-12,-7,-10,-19,-11,-30,-14,-9,-11,-24,1,-15,-13,-23,-7,-10,-3,-21,-10,-19,-9,-14,-18,-16,-10,-24,-10,-12,-9,-12,-18,-21,-12,-18,-17,-21,-10,-25,-13,-15,-13,-16,-6,-13,-9,-27,-21,-10,-7,-13,-19,-33,-15,-6,-5,-23,-28,-16,6,-19,-18,-20,-16,-24,-1,-11,-28,-18,3,-17,-20,-18,-5,-25,-24,-11,0,-27,-26,-17,-12,-14,-3,-23,-14,-12,-15,-33,-18,-4,-6,-24,-18,-16,-15,-23,-13,-15,-23,-22,-3,-13,-20,-23,-2,-12,-19,-23,1,-6,-18,-25,-2,-16,-7,-15,-32,-17,3,-21,-23,-19,-15,-14,-12,-11,-13,-24,-4,0,-22,-29,-7,-11,-10,-21,-7,-10,-19,-23,5,-12,-22,-35,2,0,-17,-25,-6,-4,-12,-34,-1,-10,-22,-21,-9,-19,-1,-17,-28,-21,-4,-7,1,-30,-19,-8,1,-14,-11,-33,-7,-8,-10,-28,-12,-23,-11,-22,3,-15,-15,-17,-13,-16,-8,-22,-26,-13,-1,-23,-17,-10,-8,-20,-21,-20,-10,-16,-22,-22,-4,-18,-17,-13,-9,-20,-19,-12,-15,-15,0,-25,-12,-18,-9,-10,-9,-16,-16,-4,-11,-24,-23,-3,2,-17,-26,-30,-3,-1,-22,-24,-11,-16,1,-16,-18,-19,-4,-23,-14,-10,-11,-23,-14,-22,1,-14,-20,-7,-13,-25,0,-15,-18,-13,-6,-9,-13,-29,-15,-4,-3,-20,-11,-12,-10,-17,-2,-11,-11,-19,-11,-8,-20,-23,-3,-11,-18,-17,-14,-15,-7,-24,-24,-8,-7,-18,1,-21,-12,-15,-2,-8,-25,-29,-5,-14,-10,-4,-10,-29,-2,-1,-14,-21,-4,0,-8,-27,-20,-8,1,-12,-10,-24,-19,-19,2,-17,-14,-11,-8,-25,-20,-3,2,-19,-19,-13,-14,-17,0,-10,-15,-15,-9,-20,-12,-16,-14,-29,-10,-22,-5,-9,-20,-20,-11,-12,-1,-23,-16,-6,-5,-26,-17,-2,-11,-19,-10,-14,-16,-14,-1,-22,-21,-9,4,-19,-28,-28,-8,-8,-14,-17,-12,-11,-12,-17,1,-14,-18,-12,-11,-9,-11,-24,-14,-7,-11,-21,-10,-8,-18,-20,-4,2,-7,-24,-15,-12,-16,-22,-8,-15,-18,-20,1,-12,-13,-18,-11,-16,-6,-20,-13,-19] }