Skip to content

Instantly share code, notes, and snippets.

@vaibhavsagar
Last active February 13, 2019 04:22
Show Gist options
  • Save vaibhavsagar/2418c9dd79da431065ad0d80e690b12f to your computer and use it in GitHub Desktop.
Save vaibhavsagar/2418c9dd79da431065ad0d80e690b12f to your computer and use it in GitHub Desktop.
A series of 2SAT checker refactorings
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE ScopedTypeVariables #-}
import qualified Data.Graph as G
import qualified Data.Array as A
import qualified Prelude as P
import Prelude hiding (lookup, read, replicate)
import Control.Monad.ST
import Data.STRef
import Control.Monad (forM_)
import Data.Vector.Mutable (STVector, read, replicate, write)
data TarjanEnv s = TarjanEnv
{ index :: STRef s Int
, stack :: STRef s [Int]
, stackSet :: STVector s Bool
, indices :: STVector s (Maybe Int)
, lowlinks :: STVector s (Maybe Int)
, output :: STRef s (Maybe [[Int]])
, possible :: STRef s Bool
}
whenM :: Monad m => m Bool -> m () -> m ()
whenM condM block = condM >>= \cond -> if cond then block else return ()
tarjan :: Int -> G.Graph -> Maybe [[Int]]
tarjan n graph = runST $ do
tarjanEnv <- TarjanEnv
<$> newSTRef 0
<*> newSTRef []
<*> replicate size False
<*> replicate size Nothing
<*> replicate size Nothing
<*> newSTRef (Just [])
<*> newSTRef True
forM_ (G.vertices graph) $ \v ->
whenM ((&&)
<$> ((==) Nothing <$> read (indices tarjanEnv) v)
<*> readSTRef (possible tarjanEnv)) $
strongConnect n v graph tarjanEnv
readSTRef (output tarjanEnv)
where
size = snd (A.bounds graph) + 1
strongConnect :: forall s. Int -> Int -> G.Graph -> TarjanEnv s -> ST s ()
strongConnect n v graph tarjanEnv@TarjanEnv{ index, stack, stackSet, indices, lowlinks, output, possible } = do
i <- readSTRef index
write indices v (Just i)
write lowlinks v (Just i)
modifySTRef' index (+1)
push v
forM_ (graph A.! v) $ \w -> read indices w >>= \case
Nothing -> do
strongConnect n w graph tarjanEnv
write lowlinks v =<< (min <$> read lowlinks v <*> read lowlinks w)
Just{} -> whenM (read stackSet w) $
write lowlinks v =<< (min <$> read lowlinks v <*> read indices w)
whenM ((==) <$> read lowlinks v <*> read indices v) $ do
scc <- addSCC n v []
modifySTRef' output $ \sccs -> (:) <$> scc <*> sccs
where
addSCC :: Int -> Int -> [Int] -> ST s (Maybe [Int])
addSCC n v scc = pop >>= \w -> if ((other n w) `elem` scc)
then writeSTRef possible False >> return Nothing
else
let scc' = w:scc
in if w == v then return (Just scc') else addSCC n v scc'
push :: Int -> ST s ()
push e = do
modifySTRef' stack (e:)
write stackSet e True
pop :: ST s Int
pop = do
e <- head <$> readSTRef stack
modifySTRef' stack tail
write stackSet e False
return e
denormalise = subtract
normalise = (+)
other n v = 2*n - v
clauses n [u,v] = [(other n u, v), (other n v, u)]
checkSat :: String -> IO Bool
checkSat name = do
p <- map (map P.read . words) . lines <$> readFile name
let pNo = head $ head p
pn = map (map (normalise pNo)) $ tail p
pGraph = G.buildG (0,2*pNo) $ concatMap (clauses pNo) pn
return $ (Nothing /=) $ tarjan pNo pGraph
main = forM_ [1..6] $ \n -> print =<< (checkSat $ "2sat" ++ show n ++ ".txt")
This file has been truncated, but you can view the full file.
100000
-16808 75250
43659 8931
-27545 -50879
-37710 64441
-84493 -43043
-22504 82328
-78841 -42613
-33170 17710
-29561 -70934
-80279 -51817
99098 7827
-29268 23811
-80980 -79150
58822 11968
-1394 19337
-91746 -25229
-40195 86358
21154 16709
15669 71491
-2197 -9531
-27723 54667
-18025 97802
40978 47409
-74934 60299
-28636 8014
89815 39064
-39426 -1670
-20095 75630
-46518 34196
10405 -19452
-82189 21124
46883 -6753
36717 -30338
-53145 51502
-83872 55829
-19359 53178
-22295 77905
-46232 -59746
53636 -66299
80400 27969
261 -73558
88009 16396
19114 -4531
-10963 97943
-42083 -79853
33822 85696
73672 -59902
-24832 14739
31617 19791
10680 -37336
-97973 -36099
-75320 -83455
-12290 56761
86127 -36124
45814 -76771
29095 96221
12367 -40535
15395 -41364
7845 -59591
-45160 -8624
97386 7218
-55540 99248
-13497 -94886
82421 28145
-35736 99916
-63535 -46043
54680 24153
77296 78819
-87693 -1816
-40034 22670
-89554 10548
-21211 -29663
-33809 73378
626 37336
-77996 -2777
-97440 -29875
40557 56302
561 20095
-13756 -39790
-28016 30194
-15681 -3456
67507 -70964
-86677 63109
2332 -77845
-60809 -39998
-54850 -45204
-96532 -98015
36776 42010
87930 -95224
-88261 76738
47318 37526
-34257 21565
6649 -37705
25151 41977
38555 82798
-48382 34749
-59379 47700
-25130 -78554
-50448 64608
45323 64306
70054 -27225
80367 5401
95371 70286
-93899 8156
15558 -96577
-58267 -87358
-27879 -20615
-95738 -83134
-23721 48763
76198 76032
-60590 54874
37305 79359
-77255 -68961
93948 -45481
-69956 -74547
41239 -40001
-45036 74858
50115 29594
-98355 68419
-42586 -13730
-76564 6103
-86644 -19420
-47748 -45270
-23304 -4474
11749 -24386
63460 -45407
-39825 85133
59604 46898
3951 35232
20204 13901
-62534 -81259
18677 -20951
58781 79880
82575 -33550
6250 -52772
15880 -984
92041 -82724
2972 -53230
17747 -10300
85622 70777
68245 76959
66772 29065
56599 18752
-64504 89552
27206 -15081
-59275 59650
83321 19026
-1784 54789
24009 81551
-19196 -51258
35691 -38667
-60594 90554
-90961 -28743
-54353 7308
-44911 -13201
-43128 -20172
-34415 31626
19518 -55349
-14316 15975
-11374 -72221
-9240 45055
-56930 82254
15167 4357
59861 45899
1721 66117
-98868 -49353
-78699 -94902
-16617 -56892
-31729 26672
77046 3121
-17159 -99454
-85351 -53712
-29595 -7534
-7828 -98796
37443 -51517
-78516 66925
-27098 -68662
34325 80109
2282 -17016
-63217 1906
-67782 -82721
-81170 -97866
-29537 16729
-20385 80168
477 16047
68667 77468
27385 -41992
33259 28212
19519 -85719
-66826 80768
-49819 73015
-2919 58029
78035 6728
33755 86541
90936 3084
46866 87012
-53065 77877
32676 -70246
70416 -28193
-54748 -63038
-68448 49716
59580 67130
-33980 53502
-10290 74959
11801 -65090
35218 -80847
9544 40339
3322 97720
-91248 -43789
-25988 -45036
-83913 85685
-83785 -63735
-520 72616
-65977 26662
-82820 -71632
-72699 -36799
-14005 -9504
-48766 -7392
-64925 14366
14455 -77107
51704 30833
-32142 61655
-42218 53901
73466 -84748
89880 59318
-64049 82763
-49040 -52709
2658 10762
-61467 8622
6997 -26956
-21495 45556
-29313 -2294
-42233 -77445
2199 49153
-73571 -64304
12915 -35800
-91836 -81922
-22753 -74087
-39151 -68411
-44670 -9606
37312 22432
-39817 -38700
80640 1371
-79892 82858
83329 -18178
-17684 85177
-72092 -70435
-26905 -91027
10791 523
-6891 24885
-41442 -7128
85785 -94538
-87562 32582
45803 57733
-47855 -59760
72378 -40463
-43820 98151
942 43837
-32300 -96113
19957 74391
30049 95015
-14919 40151
-41296 -19822
-44502 28246
46058 3511
-50806 62174
-9670 -39097
47422 -18676
24301 -76490
-32055 -68264
-24890 -45251
69416 -31365
50964 67759
85093 -57317
61421 -58061
-63369 -78742
-99197 4788
-88235 -93129
-77449 87876
-41872 69330
33720 73472
25765 -81080
-94411 88081
63343 -98139
-46045 98829
63576 981
45597 -5948
-66088 6544
62853 90262
54401 -82381
71858 -73424
67015 -52846
-68510 26611
-9219 -19291
-85744 18556
-6535 86276
-11152 -21227
94460 -32784
66438 -37880
-14101 83138
45879 -18285
-64916 -45961
35141 -10708
-20729 -563
-41970 -42891
-22279 17314
27011 -34841
-46001 -7395
87657 -66552
-93432 -54545
8777 7585
74109 -75515
-95020 -83029
-92371 -56664
84025 -24544
6009 14982
-86289 -68164
11020 55380
-19462 8488
43900 85789
-69881 -82467
-65275 237
-98568 -21835
-69685 69652
9267 -47468
-19590 86328
25582 89296
-37875 -45436
66973 -83029
-39071 74588
69090 -2647
-58112 -66613
-72113 -23782
-29231 3322
55129 71951
88960 49755
55195 3331
-53560 -58778
-18633 -63273
39082 -37154
98522 -97957
75592 66901
-74121 -62705
-7130 -27145
-40871 -18417
47081 74619
79453 48129
-87663 44841
-86386 -66584
-30660 -14879
18562 68383
-84055 49441
-18771 -2029
-67545 -5870
72470 22711
-5924 -52126
-98851 -61432
47847 -25870
41395 94611
-31065 9525
39520 -93621
71662 -3726
5950 -22091
86261 60094
85123 -16382
66469 -71024
-66640 63518
69365 59179
-56772 -88342
60837 68490
67121 74903
39617 -33348
-32852 -2673
-46524 91737
29608 -80634
-91554 41413
-14041 59154
-21734 -88296
42252 -61259
-94161 51139
19876 4599
25634 14563
-93237 90647
29465 27485
54120 33843
-78860 263
5717 27128
8749 -44001
-61399 61293
-8929 -12301
-52193 -73564
-44273 69802
-46222 14487
-15770 32532
45820 49487
39817 -64255
-49815 62616
-62967 47298
-25761 -77413
-38232 -54175
14878 80325
-27834 -6751
-45000 77430
-12145 -55365
32813 -51980
32408 93584
-14260 88311
-15892 79322
65254 13930
30554 -30662
27492 22964
40769 -81688
-55473 35220
38205 82952
58446 -81371
-41963 96177
25827 58414
-62572 -85980
68130 57289
-979 -5618
-47839 19509
94927 -29969
-25200 32256
23277 3489
-2820 61865
-92417 -80319
80684 18399
-19749 -89962
11019 -75978
18662 31479
25064 -25236
-91309 -78969
-4120 7324
79393 -78954
-51854 -89296
48476 -40205
-28033 -8820
34036 9469
52611 -50235
-6779 6266
-43280 -89076
-12688 25364
-75767 -74535
-18676 -26185
44157 17400
-52094 57887
44925 -88048
-71331 36768
-6911 31683
-96315 79653
73586 -37592
64761 17961
-10404 63431
-14201 -48586
30485 3989
-95687 -80101
28200 61103
67184 93918
87803 -74490
39726 -20790
-60596 -40606
38692 -20722
98515 -69863
-71284 -34627
23802 94331
52376 -23259
3132 46737
-8309 -61025
-80509 88412
56001 78315
-34000 95646
14963 -80540
58822 94287
-11 14663
14494 6636
-84572 6839
64892 98414
-89958 -44093
-89776 32769
-416 -16637
23348 54370
-24135 -28929
40880 -10907
-25808 -32538
4422 -27448
-51950 -19417
-81939 -78551
-52187 81097
-70525 -97923
-29182 -73013
72203 35496
33455 2209
-8032 -20831
66715 13113
-29938 22010
42920 -84382
-99909 -11610
32868 -96120
-75000 -44521
42578 -59923
-3981 35882
10031 56326
46995 -43946
23234 28481
-92835 76518
-8782 33459
-74993 -74161
16202 8543
49636 7556
-57444 47323
-78442 -84782
-69519 47161
64956 59083
-3033 -19314
-34329 -22505
37712 -3882
99905 92552
-96762 48865
-32123 -65114
48637 -85119
-52189 -53744
74503 -70344
-36220 48213
-9933 27783
47860 -47074
-44820 -44011
53016 -34979
96046 -48271
-3009 -73984
40710 -38214
42952 -54666
-51618 -14954
-17917 7585
-67443 -23504
74330 -7258
90265 -9353
-32527 -16028
49260 -2953
67423 -59130
95550 -41880
78891 -98604
-32444 68828
-199 88588
-34032 73477
-31564 -50215
-86833 -29723
32792 -82872
64734 -31554
-22381 -78705
-98888 37111
-11559 48787
4041 62660
17563 -76939
54527 33527
-27596 98622
10342 -69159
-6021 -77198
32452 59463
-22938 805
-54406 -908
-94259 -56540
-83698 22282
-81458 75606
68413 85625
61460 20300
14741 -96852
-92923 -76894
-58050 51362
-17232 -57797
50697 -87445
-96239 -72432
-15936 21266
18388 32438
15121 -15425
-42776 27904
-16287 -90846
-57258 16333
85579 -57105
57032 -78221
-78631 -38644
-5649 3845
-29750 70126
7864 45417
-15349 60980
-86815 52706
-33308 -94906
13615 83716
-98898 -69450
56030 -9027
84399 -58986
-77519 -98854
-16204 -13384
30560 -53222
79035 -22676
-89437 -63280
94751 -13014
-72493 -2949
82982 25848
32707 -10179
58268 -4115
-84471 27359
24947 22305
49664 -33638
91735 48657
53013 59114
-76725 79105
-52074 -39963
-64378 -48270
-5632 19754
38740 -52521
-77598 -89425
84959 93321
-28019 37402
6393 12614
91357 -87941
-3869 -35671
-21650 65135
39872 -91892
81218 -30011
16526 -63902
96393 -98035
-92547 56188
-31566 -83590
54866 -71161
40776 -28110
23324 -31535
-34415 -55495
-46876 73078
25628 -5223
-90173 -98840
68184 -54418
33891 82607
2013 -85896
17517 5322
39228 95579
-61973 -43488
11582 -50527
62031 -51296
-33420 -82213
92313 68707
26594 -63927
-82727 42734
-95297 29393
59010 21378
50523 14241
17816 55181
-57152 6053
24678 -30418
-12466 -26262
-20850 -25008
-52431 10377
-93582 -8328
-13498 1194
64830 98823
32554 60880
-56228 -37425
74278 76407
21273 -31602
-30699 99078
27295 77128
60 -19578
38152 7225
-5021 -75016
-54178 -38696
25665 -85601
-5118 13724
-43755 -99569
74576 -4914
4158 -10717
60143 40963
98441 -37306
-17407 -45202
-51621 52963
57136 -31753
-63236 -84611
-84364 -51852
-55452 41111
89448 26235
-49224 -68089
60933 8960
-75346 -74703
72890 -51820
34887 37108
-52501 84947
29366 32745
-34475 -97918
83696 22867
76492 90792
-13757 94060
-78098 -75310
-46023 -69086
93520 71721
50149 34054
-62877 76834
95194 82904
-24375 -86767
36631 -67582
-3726 67670
-75159 -43186
25422 83115
-95057 34873
-3854 75776
89556 16163
82746 -99453
-1632 -98401
29548 -98920
28202 -83960
-11580 38997
63502 -7657
65582 -66421
82152 -94046
-88455 85158
-48016 69809
13967 -91174
93087 87031
48027 -74380
23433 21952
-43302 -30188
95609 37538
-96203 -18479
-44089 82575
23597 -15124
-78124 -37847
44156 -61675
-51432 -68658
-96580 -66195
4657 86037
78348 6814
-50258 15861
-2601 1237
27534 -26476
36163 -53267
-45109 67508
-87538 -67897
23225 64467
-66834 79562
43572 -36577
-25915 -41290
91860 -12639
-88461 -52928
-50843 18456
95712 43581
-8810 -35691
21546 -48439
-80939 22765
92841 -4551
41176 -93599
80688 98843
-29821 37783
94735 -49221
37904 -34621
66976 -35363
47071 -2439
-8116 64736
38735 -82268
57581 17391
-63007 -25882
32273 -21356
-41976 -60621
-1987 18198
-40538 -72596
-85496 -20177
-25083 -99828
-42600 -15306
76378 -54007
-79596 18397
28232 -32726
84380 90471
-21358 59123
-81474 -75281
35084 -15935
-59858 79564
-4638 -17830
52787 -19952
11623 -29631
-63155 -31507
-74718 -96484
-75914 -71693
-96145 -20069
-6430 11866
-33388 -941
79198 46680
-10364 -78901
51448 21502
97206 90321
63573 -53077
69320 58970
1630 36153
-24559 48608
-24563 33217
-69246 57549
-23709 -814
48106 -39615
-16336 -98471
-13980 -46959
-24060 -79946
-53749 2745
66738 -27492
499 79778
-34383 -25557
83134 73211
-671 24271
5354 49329
-35874 -91083
-49301 -16406
7622 -25385
95848 58329
68786 -84309
-32775 22924
-23873 -23925
96390 42857
-74999 -37748
43968 87384
-15944 60837
-92147 24363
-69943 -89597
28382 -45282
-93789 -23805
-90688 1984
35566 35294
-29939 -21852
54191 12681
-53527 -66430
-73415 57618
-82639 47527
-51358 -56126
-93880 33552
-51960 43982
-76326 12495
-3065 14564
25502 6873
78054 14330
42281 -99360
-90041 78777
87705 50019
17487 -91267
-66375 17699
-88028 -4416
29842 -48410
-20936 3766
37762 92833
-81220 -6195
65255 58132
72305 -27684
15114 82412
-45709 1760
74673 23793
-90216 75230
-77144 81481
-58306 49185
-59512 -51210
-849 -15786
-70761 31581
72064 -39734
-38586 30201
-94443 -21175
-38664 -94894
-48199 70364
-63992 70178
798 89830
-570 -75861
-31466 6712
18097 51
1124 -80889
-43821 75817
68378 63373
50381 44077
-97042 -62619
-91920 -45944
22782 -2059
-85468 -6153
-16462 5896
-62430 -69628
92287 45461
-54993 -79002
76412 -80385
83514 82671
-83986 86121
-67246 -77298
-48200 -59703
-36168 88420
-40138 -89830
-54619 17219
-10816 -63838
-57130 -23025
49967 47473
-50161 -69779
-70372 85325
60781 -55578
13955 52116
-49622 44609
-51853 -36096
79011 -161
60911 -98283
-92302 -89861
18021 -12685
-46606 72709
-20625 40050
76545 99417
-27082 77062
-55639 -24204
-56023 -47014
84852 -54184
17858 47801
-21090 -21802
-78011 -26675
-11529 -79692
2582 13294
56169 52416
68525 13054
-82488 -55796
-42694 54807
-92232 85379
-51231 -4210
14633 90975
-87271 -14554
59389 -43165
64689 -80608
-21159 -12817
-8978 69493
22030 92291
-43752 84028
91440 35741
-95778 49137
-3012 -11685
-32976 -93160
42650 63900
21975 -91991
-16743 26223
-83461 -69835
-81294 10418
20366 -58249
-82333 34389
89259 -59003
-20720 36311
33993 50737
-34009 69751
60320 38
49695 -55594
12812 -75906
23208 -58554
84665 -91908
-90815 -84870
-79515 -81088
-24449 4068
-71868 96561
7671 28884
96369 40227
-45323 -95438
-25572 99897
-29342 -84159
-78889 72472
70108 91921
-4194 44553
-53014 -34829
56199 -20418
-61989 -66547
-81366 -99689
1767 -46444
-52005 21168
-88123 -13047
-96704 -74121
-81465 46952
8730 97843
-12189 37151
-79303 60674
93398 20116
94389 10387
-89718 -66623
-88327 93197
37080 -57885
36891 89598
12312 6344
7453 -33926
-28073 98388
-81516 74328
40783 92978
-29229 -31814
-13902 -95240
-10324 -38965
-11459 -67960
53749 35528
-55134 44009
-8122 69900
26731 25382
93214 -49508
-84399 -45470
-12681 -93648
95476 -15789
77865 -12248
34039 -82628
-59332 24080
21147 14728
72739 -34442
-98503 95466
38012 -63909
41844 95374
69837 93003
-65971 -81402
-54041 -29109
30206 -46788
-98402 -49666
12160 -458
31044 -16883
22904 6240
94262 68605
45028 55785
-4857 -7415
4949 59609
34988 66836
-61137 61758
6565 83955
42234 -33624
73245 7371
-11305 -80286
76165 -17656
92680 61411
80591 73502
11350 -67968
-50711 -23505
27161 33965
89928 10102
-68383 86545
-10070 -14824
-46769 -91679
-62870 8275
29238 42558
19790 -24813
-26684 75803
-43153 -25068
-16289 45108
-78833 -87282
93233 -73428
-83986 -74971
15024 -21866
-14218 43819
-98201 -58535
-13358 10120
-91794 -46613
50970 -7519
-52499 83550
17191 76769
9427 84873
-60118 -64994
-67442 -83732
-15269 60764
11923 -738
26979 -55047
78164 -73584
-7085 -38774
-35233 -48770
73763 94485
4136 -44631
78595 -45627
76135 19816
-4592 -32600
41570 7602
20411 12874
13012 1129
-41513 -2380
67070 -32852
-73865 -46885
-24645 -24992
-54442 61400
-72496 -40007
98912 -49539
-59454 -28319
97004 25981
76874 79938
-99900 44294
90144 -41819
-25076 65776
-18777 -30331
-52129 7449
-98163 -73662
-74338 -60815
66631 28808
23326 -98344
10016 -32851
-33076 524
70013 90030
12974 14158
59224 -61354
50953 -51377
73939 -16212
94295 -54310
27397 96010
-13645 56736
-3659 -17004
-49405 -1847
-65951 -66176
-75964 -80153
19785 37988
15278 -85252
-50684 -95221
-74791 -20243
6837 85263
1270 -34715
-41067 -12958
18851 -12020
6644 45969
96502 76047
-17721 12482
15712 68348
18477 -6797
98257 -68237
-75640 -54640
10488 78267
1607 32092
74899 -73347
61634 -79002
-14385 -48059
-34595 5987
-87090 -41236
42969 6501
43541 -89789
-41884 -63224
31624 -69157
5813 24170
-70163 -84882
28236 21672
-3071 2867
-31129 85627
32200 -61304
-76689 34242
-68420 -62682
31924 57799
-80269 82962
-6502 79184
17421 -19614
27 77251
76433 42307
98965 -70903
52091 -24720
8135 18276
-73433 49595
-19044 -37948
-6796 96965
39167 42095
28559 -33322
56871 76743
-93155 71130
94548 59273
58797 -11698
33541 70107
47644 -23782
71776 -34218
23893 97012
34276 -26138
87433 -48738
73587 15693
-62961 -99460
-16396 76386
73064 76269
9079 18426
81116 -8527
97741 35724
21551 93060
25098 -94080
38318 -99158
-20722 -64052
-29529 -76023
-38953 13257
17077 65705
6688 -60634
28658 -1060
32277 25801
-50171 -86073
45443 -14787
-53587 -20130
-13588 -41588
-77660 -37586
-95720 54572
40704 15654
40442 85299
-68238 74227
-37929 -11995
24328 -88748
72932 -81191
-91331 85724
-5130 -45308
-59540 3375
-9147 -49490
2872 60156
19480 97147
28877 95875
-96386 65888
69250 -2901
84309 17414
23528 -52951
-32186 96972
50855 29969
-54597 4760
23299 21686
35620 71168
93134 -72430
-6095 -51967
96412 -56270
-23400 94758
-73424 -76656
-35221 -39677
25086 3769
23568 57825
-91787 59191
-89326 -41239
-86704 -10313
-52897 -5873
-25897 30828
-20704 -220
-87872 35601
-31530 44739
-71966 -50917
45780 16948
37178 77149
74561 93139
93762 91518
-92589 25543
-15105 31780
-42676 35466
-50716 20541
28 90702
-79511 77586
96707 74594
-99816 58300
-20447 6954
63150 1823
56455 -36823
35460 28197
-95753 1217
-34877 22300
-30904 -92537
-436 -24516
55622 34494
95345 22516
-22624 71981
-96938 82924
-70743 74442
-84803 -78699
24163 -39386
-51993 -57124
99084 -31895
-19553 32194
-43610 -99455
569 -39599
51053 86855
9509 -99402
20142 -32345
-6288 -65175
54938 61583
80882 -28273
47434 27257
35531 -49416
31312 -65334
-23446 89521
60827 -7913
-53834 55502
-91984 23536
-40367 43871
-70548 97585
-17333 13642
-57502 -57248
-66816 98862
92233 41027
-61563 -53965
-69578 -4436
-63824 -78927
-92924 -45866
-89647 43668
-52084 1952
-13044 -2587
-48418 73862
67156 -18615
-82917 -98674
1202 -73381
49805 94092
77382 -59964
74593 91491
47955 82430
-79182 -49961
-36183 47980
26496 -60416
-34889 86790
98458 -24187
-4046 18715
1643 1082
73997 -53967
-37791 14062
-79660 -27636
-78337 -71993
-42782 38603
-23628 96619
41664 -8093
41550 63934
64737 33232
97029 22710
12218 39937
77310 -78540
96815 4005
-38057 13285
88276 40666
59611 19460
97349 82634
92735 -19907
-11211 -4708
-12421 24309
-89508 27200
50462 -44208
87711 70601
-49579 87239
26116 6916
-47648 -25344
8340 -87996
-91615 -25686
47081 73099
-16210 41490
-166 -41077
-82442 -93974
-46745 -25747
-35284 56541
15254 15887
83813 -86669
33388 -67569
95705 19597
-76965 98810
-40017 91710
-20579 -42362
50513 15012
-31961 55000
-98343 -64507
11545 83908
-82788 10581
-60379 40941
-76263 38067
35937 -48808
4438 -73137
-35953 -46331
46601 91037
-63516 -24447
51678 65313
95637 -53125
-50588 -14255
-2024 19432
89778 -56758
-31217 -52666
-54013 26477
-94508 -24210
91451 -58793
-68564 81189
-82201 -26737
-53316 -64032
69198 50109
-99510 11717
-86676 69025
40520 35093
42658 79116
-12255 -37226
17138 57749
-84871 63537
60643 -88042
22604 -50982
-50220 -22809
-53777 -96183
92424 23669
-70952 64421
-56663 -97625
-96866 75772
-68870 -84074
34128 64569
98012 87231
-7958 -94640
80661 43180
-20478 93687
-95866 -68033
-10363 -42292
-12992 -7001
18432 -38624
66036 50311
14220 62558
-78265 73377
57337 -73432
18493 56727
-91678 97405
31308 45506
61807 -71572
-87895 99782
-43234 55072
8587 56063
-87620 -96142
-69110 -90186
99583 1981
89020 -83495
-52960 -61123
41384 52331
-80451 63600
-598 -19840
53614 63554
-66825 18154
61496 35012
2570 27844
83468 -56152
-55316 -11265
-79250 -63541
38024 -92045
1122 42068
42753 29813
33063 70552
-96301 -27617
22718 89221
3111 -14862
66864 -54091
96505 -48933
-17174 -7811
10258 -78654
-91873 -98901
68022 15339
-53482 88035
84883 -26642
40634 40638
-77110 96392
39161 17072
-67960 -53950
18726 388
-21881 -98008
-82773 -13008
40998 23063
11015 74239
-39420 -1348
-18175 70559
-25133 -76013
11180 -50723
-77449 -14255
-15885 -82648
-24601 -33138
-99621 -4612
-85139 -23646
-97710 -46778
57709 42293
81750 40003
71014 -26272
-53672 89105
12187 40392
44423 71216
-27958 24872
-62983 25878
42351 -6559
-855 24410
-62211 -87375
-48459 26067
-13984 -79572
70734 -13492
-77222 -13545
-55319 49174
-33441 -20485
22762 -11029
88616 -51174
47632 67355
-28933 -7413
-44380 21113
-50819 -48402
-16036 94188
-97994 10060
-25854 -2408
22253 -52094
-78270 -91034
-52824 2277
-10419 55316
81780 -68933
98589 15936
75606 -38223
-20847 -43405
38794 76421
81799 -93188
9298 54168
-3740 -30174
58117 57606
90365 44535
84418 32262
-90701 -16430
-55605 -28789
40461 -81197
85483 11754
69902 51905
24437 -22551
-77985 -49682
89373 -53602
93444 -30370
-95780 36209
-79086 -94323
80079 -46088
38576 -65622
1917 -38794
-45161 -98282
-47913 -66864
-62229 -22049
17258 -99790
-14606 8090
-8490 -28386
-92937 -86106
76360 7337
58235 76452
-59667 -34889
-73516 5770
52088 -20887
20391 8170
-97297 69256
63201 -93891
1595 -96601
-12589 62287
72354 3392
-55276 46421
-1500 -17086
-620 -84852
-83140 86396
44446 -67799
-62180 -10448
-99197 -40927
-90946 -71327
-66020 -60986
21481 -91080
62127 -93048
-4625 70497
-20599 21992
33540 -49801
15707 39661
10939 -10501
-90729 -25059
40195 85153
-64857 -67699
-14056 -61423
3760 44450
-12101 89471
39593 -85890
-8593 47453
-71725 -11491
-84206 10232
66457 -79339
95751 84968
97292 51945
10234 -45959
23067 16320
-67403 72919
-22782 97194
-73948 32972
-5048 8342
-62680 -57615
-28761 -52267
-6772 20095
-9042 -87996
-47098 -45975
-76975 80447
-96380 -68267
93002 11998
61238 -55651
55332 68015
78198 -34492
-80514 49220
37913 75804
60499 -59690
-94110 -89544
-37500 -86205
-49734 27205
83364 -12862
452 -22062
-25163 10489
22204 -58875
3057 -10297
85512 52538
16390 30761
11178 -59799
16998 -5481
-48736 -57063
79041 91393
60475 -75327
-29365 -20148
-41893 -16877
52269 49091
82797 12054
14958 -2278
44366 -84795
-99131 -70914
28012 -41852
43949 -57583
87172 -18109
-9274 -42706
14643 -90723
86919 -37285
72945 -16270
-99198 92903
-15461 -41343
32057 24158
90690 -39027
1658 5402
29013 55568
43214 89424
-91376 -51037
-93098 49655
44522 2138
16482 17847
-20633 -47446
-96625 8770
-85182 -80219
82778 63394
94609 17391
-81748 -4607
-50042 -48940
48134 21295
71436 5271
23197 12964
-74492 -492
-85890 11881
-24918 -30718
79903 71430
78151 -34368
46233 80340
26416 29230
28001 31605
-62308 31540
84208 10386
10415 -58261
-18236 21510
17194 46487
52314 -53064
-35202 -48378
-57693 -90985
-77112 -52894
-39678 -28440
-94750 -30741
30656 -9834
51166 60183
-59922 -8308
76604 -61245
-70079 -19451
-14096 -26467
51566 58059
71615 -64557
-69949 -45244
11163 46958
-81063 18287
-17786 7496
45400 62178
-50231 -29485
17472 -93097
-58094 -31454
97356 74139
-11706 72416
-65035 34948
-35195 -14984
-11101 39920
11115 21975
-3396 89439
-25821 -86006
82450 70815
-43130 -3434
9437 -67241
12637 -14807
26405 64647
-708 -21125
-30745 -96920
-1307 -26489
16693 66618
32753 41081
48382 29923
75302 -16294
-71454 80175
-94870 39260
-49356 -60115
7208 -65428
-1367 77702
19302 73784
-78077 67989
75270 -92610
78200 99965
11896 17403
49219 67312
-87435 51501
-66385 -90395
-84570 -56668
-41546 -46177
82198 51142
-85355 -66389
-78696 26038
33259 5990
-88248 -97715
-83762 32914
76355 89461
53072 -89780
27800 55622
-39889 38890
-92280 70913
66628 93016
-52024 -40147
34063 73969
32662 20939
-24912 -63583
-77896 -51900
-6427 31198
57368 -74817
57530 -56170
-53810 44002
-90967 56041
-68219 -57115
64242 38364
-80765 55877
-90694 92835
16121 -37681
-64604 -5679
-56189 -59079
-98685 -11296
-66608 3010
-97386 57697
46214 90388
26 28146
60275 58052
-64267 88331
-17805 -92942
-97940 86991
-4771 -11141
81286 -79272
81223 89064
-41807 -96892
-4306 36705
-55409 58252
39049 -58765
42709 -33625
-43789 -49046
-80319 -16223
-41169 8283
-5149 -28783
68975 -29208
-48196 -96947
36505 96731
88751 1515
-83414 32125
-1918 68063
-14160 -65064
77265 -28818
-7863 61447
-67591 -68520
28335 -57274
-3208 80783
-83873 -55159
25863 -10385
76243 83854
74170 -93988
-57050 52517
13653 8038
188 42444
19414 99150
-44554 16462
70183 81477
64484 32510
75047 9276
99681 -21299
-56962 -38070
-79579 88287
-81995 84062
-98532 92983
12982 23217
91809 16818
12096 36860
-91582 21092
20378 -64809
-89657 85413
39897 -58013
-80052 60351
23738 -14711
70892 71138
-95997 -15422
-35090 -9430
14545 -61049
-35189 2504
-82130 43870
84274 93015
-91222 -45471
98258 -27083
97229 -96749
8692 61498
26848 -70418
67215 -30237
-24221 -72776
-7175 5917
42137 9253
50363 75404
35799 -67540
-10808 -62661
67853 -42623
57577 66047
-40443 40296
-10365 -57883
-56993 59799
-64497 69563
14607 52773
17474 80604
64932 -76055
-32370 -92058
5763 13593
61700 -45259
-41179 -37208
-922 8886
74457 -71451
-21211 -806
-31558 71141
16484 -7386
-60841 -46821
-49382 -61054
14372 34729
49929 -50107
22027 20764
13962 -16657
-68954 -68640
1061 11183
71631 -6821
8470 73141
-80760 -93568
-36126 -49035
54668 -58146
37021 33531
74334 -67547
-76761 -53960
-12972 64122
-27911 -36702
-81586 29754
-16382 33764
92021 -95512
15368 94110
14766 -31598
-16368 4909
-20262 -84458
34046 64554
80041 -55484
-14266 -86632
-87336 -6205
98416 -54201
-74765 -62132
3636 75780
-54820 75859
33470 83891
-40633 95844
18994 88415
-84857 14072
-95728 21399
24416 42979
82332 -72672
-59313 -31133
-74824 72480
-73829 96242
-28710 -31792
25654 -59647
72048 -72627
5713 -79305
79904 -43242
-98858 -35849
-99257 4995
27214 68114
18567 -91755
64767 24291
25320 -74470
-7932 73326
8369 -99107
55563 -99068
-53739 -67893
54344 -87627
50607 -59451
-31161 -40570
13816 -37272
65742 88840
-37113 28126
69441 -91120
-80041 39297
60160 76811
6314 -36768
98815 -99297
44928 -47394
63045 55065
-8292 86117
86374 94681
-25691 33113
-71954 -80642
13631 -74234
-17340 -18017
-94674 -52974
-45870 -57508
-28582 36436
-5640 -41906
-37927 -29753
20089 -88585
-60970 -72100
78835 49014
5697 1579
-22843 31385
-67838 20041
65244 51344
11275 -30935
45059 -37030
88507 73593
-65464 -5602
-67586 -58541
-1989 -68915
-76460 -72900
-12411 15682
3147 52050
-86292 58569
21040 -2281
-88459 -95064
90141 69776
-2761 -59891
15156 -85254
84245 -69869
61662 -53127
45430 86390
-70626 89811
59715 -44169
54832 -72994
41505 34429
-21502 -79766
5227 -3294
69459 61733
65142 -40417
10890 10546
-94952 69730
-38674 -70296
6374 48282
-77551 18016
-68223 63988
-90841 99468
19066 18024
-78709 87253
-78915 -96834
93435 -14461
-55968 29422
67082 -90780
-73011 -20001
-55465 16382
86335 -2280
63423 -10524
46706 83613
-81327 41680
61095 72398
-59672 -13732
7553 40043
99461 96395
4840 90887
35383 92408
12503 -14518
-24025 -77877
80578 54992
-24571 64925
71997 11783
-92897 40932
16228 71823
-7199 -75667
29938 -26501
-81261 -37402
-76729 87121
96502 -33854
47258 -95773
-88909 -44901
-9497 -30578
-69102 -21985
-8765 -67784
-69280 18261
-14840 11528
-10141 27861
-34903 -16011
-84233 -36911
73385 -12104
35015 -23088
65577 -32773
14857 38759
72505 -55920
10129 -7395
52923 -60967
-48277 -8085
60880 28061
-44357 -86374
-16025 -69458
-9874 -55344
-72544 -45862
16459 -62083
-84382 41362
-27723 -14795
-39232 -67718
61247 -40197
-66676 -58390
73244 91284
95218 93365
65956 -81439
60856 50321
-36351 91996
-58742 52129
33716 80138
75029 99630
76134 -81772
3379 -8735
1053 53366
-27940 -38776
-39410 48684
67443 -19159
-92126 -70358
6739 -59745
-25792 -41862
82922 93201
-75617 62252
-98248 48410
-8872 -54425
56292 -31897
64819 -59260
-24030 12803
74062 84643
88781 75359
11300 87415
-88876 -23438
-24909 -23084
-14485 -22555
40396 87980
79424 -31191
-41155 25619
28014 -60341
11443 -38012
-45337 643
-28682 65041
-4581 46010
4924 -15876
-96966 98326
-39614 73013
-89576 -72208
75147 -11548
79365 28275
15317 -48307
-33312 86223
-99170 80341
84733 82292
-94391 -52014
-37447 -5517
36552 61859
3510 69321
-14201 -39969
52296 2241
-40570 76525
-60646 75818
-28641 97699
-45474 -59547
24686 -41189
-86481 20675
-45023 -23938
-81629 -79515
38759 96743
-39741 -21646
-91720 -48113
56600 88251
36377 8907
-98094 -24493
4824 -54054
94388 -45826
50224 48164
-93859 95249
2264 8721
-68431 41501
74394 13869
-17270 -6504
4550 -63380
33711 70644
87347 -3544
49936 -92630
67902 -91367
-34 -40888
-77395 35092
-3931 -21460
77184 95327
13328 -28648
20928 -34449
-62538 90676
-34380 -77576
-49207 751
91748 -53647
36229 -19874
-2181 -4992
32375 34562
-16066 32859
-63680 -87923
-76582 93050
81158 -60212
45935 90732
56434 44323
87223 89514
-30182 -79247
-70296 -79898
54525 98828
-78618 -50277
-88212 -75298
95303 35919
56224 32149
1252 77769
63869 97964
36749 -63628
-43444 -61981
91959 -7017
47234 -68597
-4743 85636
13432 72246
-6392 -76521
-29073 11954
-6230 78303
-13633 61995
73539 94798
-62255 -21641
-83419 57391
68085 -32764
-24441 -87824
649 -41720
-10118 54158
-92830 -35996
89335 85355
-43405 20271
-21015 81937
-9732 19171
-68698 56165
85140 -98529
-78543 61864
-11111 -80818
48425 12205
93878 -42758
-96588 -11985
-58252 53611
47815 10876
-96222 -57856
49855 -46019
93563 17887
-93392 -56768
-15089 -77424
54323 23192
67233 -91594
-9875 77970
29661 -33222
32868 59219
38625 14120
-3235 -99946
-12476 84187
19103 -122
-8666 36620
-94669 -79019
69018 26527
77696 34995
94070 21775
21121 -2955
-19469 -97422
-58631 17260
74466 -66635
47330 -28823
-95628 54081
-97256 -55603
20266 -30137
-13899 71394
34677 74343
60234 -59270
70009 45982
27209 30406
-4970 -24687
-43731 -96293
20662 -56317
65278 41733
89057 14545
-52289 96835
-52158 56812
45534 -95877
-66311 -10692
25022 -56732
-78711 -78024
-39589 -84728
-77501 72320
-95152 -83980
31082 67749
-77611 -99345
76005 89788
-50736 8384
33374 -41862
92689 -932
58845 -42492
-59063 38158
-47104 81166
49220 -30800
74077 11197
-89309 4179
-62541 -40728
96440 -16240
84676 -47697
97241 84543
-84088 86129
-70072 46685
62884 44489
59107 38702
-50006 -81409
-54694 -21865
-13106 31027
-16204 40821
21916 -2052
21447 -66473
-49545 99910
-11676 -34384
-36960 -67616
57594 -27196
66196 29513
-72857 91047
-51467 84579
63168 -97279
52261 60942
31132 -76902
69134 -62476
86796 8018
37507 -24136
73070 -63833
-92067 3072
-67433 -26877
95609 21054
26568 -97626
-56585 91328
-18711 90095
-60874 -34447
32342 -294
-91300 5364
-83903 -73005
60148 -11909
-86341 -70905
24949 57485
-33195 6834
-49303 -32154
-55511 66485
90108 -86099
84291 -46328
12070 75816
74236 56323
34490 -41506
-70546 -4382
-15857 83364
-44055 53750
-94335 -54870
-7688 14268
14463 18498
25503 -40818
54555 14984
-85262 -96526
-14506 -9028
52370 13669
-71171 -73819
-12279 49962
-77346 -50840
20858 60461
-61858 -72065
-33037 12645
-99947 -66702
61484 51875
-27736 44051
1330 10471
66617 78400
-77958 19370
40424 82873
-39363 -41136
-80676 -41973
-31665 -83826
99093 25609
-92263 6839
2246 67004
-13024 -746
49191 -9259
89959 16163
63955 50205
51119 21145
-28196 -91624
74787 -73979
68678 -32918
83964 95857
-95864 81280
-28993 -84705
33238 -93227
-72218 -84095
22576 26327
-3170 95995
94372 -49827
91742 -34670
-546 -74514
20979 -61629
28646 -86079
10775 -33451
-15637 87652
88953 33888
43719 -52674
-90232 -3204
-19249 10393
-42584 89395
-86890 72808
75287 12652
32459 -535
-55024 -25062
-52875 22533
49181 27592
-97192 -46406
53512 72344
72624 94290
-38914 8910
-44761 -58506
60848 -7171
1810 82796
52631 27968
13829 -74556
78252 -76077
-39242 55424
86257 8861
-95338 -2908
-10517 -4249
14232 -10526
-78657 -30812
-84710 -83485
32259 95707
7957 -30067
28860 92110
32680 265
-36439 -52261
64398 61364
81664 46712
-4010 -84833
-3049 5018
-99288 -11587
1787 -79547
-11829 -35220
-47017 -60958
89494 62833
-33976 -63221
-46550 83474
277 19035
22329 73890
-17271 -45456
28244 69560
-99935 62162
-7903 53359
-66799 92091
11810 15360
-77379 -43238
-8590 -49728
98358 74577
-91471 38573
11813 -13512
-5994 7271
26306 -44521
13664 -67825
-79808 14718
18968 43616
-56000 77580
-1143 -38628
-37292 96630
3720 91282
-44006 25758
64354 67963
-99431 -11070
83107 -52848
19052 -11033
48754 95016
-4505 34021
97580 2953
-23551 69166
-21139 79437
-54128 -9503
61849 17119
-34341 2390
21984 13942
-44680 69255
-22008 -69106
52412 -6570
-17893 86575
-32011 2585
53588 -53213
4077 -36807
7749 -30274
-45039 -17947
6419 -17348
-80391 95006
-35337 -26025
96909 -44422
-19228 15118
83260 -81106
19570 -83256
37765 33552
-2510 -53796
-9656 -39280
8350 69987
-31400 31992
-28414 -43765
19551 -58527
-50562 -52272
42950 79409
-32310 79720
3902 -3491
-44822 82463
84186 -25622
-51373 48188
36817 -76950
24519 -6444
-68906 -25169
51048 -29603
-95615 -47101
80348 35535
-26776 -81778
-47909 34082
-48393 -30641
-17548 -21197
77417 58800
13175 -88890
70590 88804
42676 -97002
52224 88296
-99273 39546
22269 25509
77289 42966
-3450 5807
66025 9740
-81834 32236
-59337 -41190
-37568 12120
21304 54955
18966 7647
74636 96319
-46754 -72757
44047 -57053
-79295 -38953
37217 -37425
-58344 -47113
-34927 -71282
-36986 -62563
70114 -13519
2984 10916
-47159 -37149
11917 -98734
-21967 -59890
1193 44802
-61848 -11242
-62258 -95908
-66324 64352
-46623 62754
94359 -12589
33988 -79976
-80656 47349
-54875 55615
42608 53399
53892 4414
47695 59833
48 33204
6331 66346
68815 -25767
58493 -42327
13085 68720
30790 -13548
99028 29617
-75117 -40317
-55397 -89489
-43660 18191
-29079 44559
22373 68014
-22078 -91526
42181 5590
51656 -66721
-53399 17555
70881 -74769
-40066 98488
77765 -93165
-63533 25249
64835 -66097
-50990 -14740
-74862 15772
48508 13852
-3083 41656
38757 -86610
24729 89672
82669 -76584
28130 68876
56565 -36653
-62011 -17450
-95879 -53329
33060 -3932
95996 68203
63485 49837
55361 29721
19847 89228
-61681 -78599
26677 29200
79480 21927
-34159 -92945
17184 85006
-53337 -32762
-92262 54901
56971 -11040
66296 63144
9578 -77358
10603 -53327
7997 36050
63841 3537
43174 -8585
37707 27071
-50205 82708
-18197 -83210
-39870 -80820
89864 53128
1183 -79503
-2656 41779
18757 -83457
-60649 2970
27056 -26398
-32302 -97475
25127 -70006
27759 78855
81467 82286
-7561 5650
-25981 -4761
-43463 -43647
98138 -17317
55234 -48690
-33910 75157
-80459 63880
47825 4101
-56839 3138
-17783 -33760
72242 94025
36123 42881
93541 725
-83237 55227
99189 35713
99098 53592
35134 22690
3995 86251
9669 -37862
-89425 -76479
75002 -14671
29665 6054
-67345 -3501
-14021 -25962
24633 79202
10851 -58506
72513 90222
-93531 87460
-19581 97206
-91764 48626
-40255 -11908
95978 -99872
-73357 -68249
-73476 -51994
-49276 39582
50604 87489
-54254 11236
19772 -5180
-89247 95078
-5362 -43401
-67369 88230
-76429 80675
91904 -12363
-23316 98865
78911 51559
-23165 -53688
73946 57184
-41353 94990
31164 -75512
-62380 -75947
56845 -30559
44055 25239
1924 3201
71656 -78114
82934 -46145
-3981 18282
37703 11850
-79320 -38338
59000 -92780
24970 94033
-9907 -93949
54965 77774
-67897 -43887
27145 -69725
12268 47200
71136 -35595
1692 -1021
-2389 55961
-46158 28852
-12264 6632
11262 -85280
-79172 -31389
35610 -10745
60533 -34338
-63621 -67133
41232 87980
-46307 -76054
12915 60012
-89479 43226
22786 -85278
57594 93235
36639 5856
11676 78205
80243 -39730
94814 95605
65713 -40774
-39198 -3654
43559 18871
37864 16261
11621 -7836
74827 42664
-50374 -19335
21225 -80267
94155 -66076
92504 66967
99168 -8387
97671 -1781
38231 46170
61188 -33259
-57423 50643
-92765 -60329
-62123 -79648
83917 11220
-20493 -86241
88427 61766
7973 -40806
31744 -50493
82518 57801
-16360 -13431
53065 -96789
-88035 -96406
71124 -76839
91663 -52747
12874 89264
24510 64772
65314 -57500
5641 11005
69688 -47506
-46757 62211
65418 59140
48670 17185
-93580 85217
19741 -7582
-56564 -14908
-63206 72896
75481 97968
-28051 4630
-98871 -88655
61329 -10081
-27612 -48252
99646 17251
-46883 17183
5920 -98688
37129 -51547
-97 27832
44688 -44661
6603 -23437
99534 -90219
44699 -15606
-64928 -39289
-30712 -67914
55938 -20086
33285 -55969
-68251 28068
40933 -47800
-11673 -37556
-21970 57188
-19312 21891
-29602 -59767
-39887 34314
41148 -59954
81440 63851
-53846 -82195
45669 -89073
-37545 77150
-64527 1926
63180 59945
-81050 -53808
-50974 87351
56449 -46357
-92188 -34506
-50583 -94008
46324 62523
-47135 99312
-85598 27379
-73935 -17167
13412 47579
94321 4089
4664 -28864
83418 -62864
-67313 79213
-90161 79229
95870 83696
37391 83
-98824 45110
40230 -3395
23115 85408
-8732 85269
-73619 -5201
4740 65608
-96066 17475
2657 -68535
52513 959
-85755 -81788
5067 -17634
-66167 -95364
46382 -73122
-31092 53939
-27136 12439
-82282 43294
44623 21109
-53015 52421
-50987 60382
58041 98336
-3604 16473
-51380 -55965
-59413 66900
-34054 -48211
43228 54230
-75417 75401
-68923 55390
79097 -64371
-29060 82152
-64236 -17828
-54396 -45750
-47904 62886
-47923 29923
-24192 28136
72199 33503
-53885 53890
-33864 -39918
16337 66361
1686 -48280
-67650 -14399
-99202 -68687
3703 -47937
-81075 29585
-54753 -78270
-17766 96600
-64985 -96526
-38035 29395
27553 -52286
-84414 74852
-88078 76075
-85782 3152
17849 -59298
-69740 -87259
62546 -50476
-84450 14161
78153 -46722
567 45707
36772 -32089
10296 55653
-63101 7988
-71009 3650
10670 33847
63080 -42991
-7674 -34391
-44369 -52273
95756 29031
-49248 -5633
-8514 50697
47296 32880
75234 17139
-23422 7017
90885 -68007
-34621 23641
53192 75130
-63371 -38146
-43645 -41554
-90231 75132
-63711 -88122
-33556 20164
-94220 -85014
-62665 29299
-95256 -54188
-79862 83232
-19363 -64635
-30557 -77450
68396 -32327
76121 -13206
75129 -67645
-9902 -67790
50859 -84354
33563 -8390
-5559 -98963
45294 -84943
-20890 -9296
45450 -74841
38689 58563
-83794 53916
-67204 -62529
55563 44355
-11706 56302
-80821 -83187
820 -322
-81773 -16800
84238 -77987
-48244 96421
-83400 96877
-79880 -42345
-70997 92333
-34083 -56047
-89236 -95784
-78122 -59327
68248 41216
75729 -6388
-86345 -30008
-45735 -29763
-48217 49486
-85025 93935
-18437 -61431
43585 -16766
-49071 27819
-73148 61878
74173 91293
18835 20374
89555 73874
-68004 -5912
-88644 36680
-20176 35203
48570 15979
-6755 32244
59494 23333
10199 42104
-57665 27482
-60777 -84878
97876 -46185
-3024 -92902
71775 -22014
-11430 29166
-89986 -46325
85362 53745
30441 -55371
9490 49922
-15393 76799
-66264 -43378
-94273 -29886
-39245 92567
-35353 -76525
96774 -46785
1200 42303
79574 97798
-25674 46255
-61726 11922
-28193 8870
-18772 58400
84098 -66053
36802 -23864
33848 -27073
27348 28111
63252 -26082
-69974 -34607
-28404 -754
36143 -83670
-81695 59762
88598 -94836
88798 -69953
-74085 45422
15061 -75115
1087 9440
-92743 52627
-76549 -61911
-50901 48425
93170 -44426
21910 -76278
-40295 51417
-29752 56640
40768 -24420
64190 48551
3067 15445
12472 93990
-56679 8534
-33402 -75403
19151 -1278
-58653 26852
41384 -90448
86260 45538
-61743 -68972
29234 58523
-67375 18141
94213 46986
10183 62785
-67469 -34573
11966 94178
73293 -71787
210 -79488
29550 -11397
-62262 44301
-66999 -85004
-84403 -49029
91963 -41839
-69956 -49623
85126 40451
-90517 -30550
73983 57479
-97898 17890
-70593 -95131
26043 49362
14775 38986
7941 -40095
-72027 -21955
-62126 83384
7901 38138
-59186 78040
-69939 -36494
-45076 44128
-71830 -89500
28862 38205
58692 87386
29606 -30032
76169 47937
50900 -5805
-20450 39921
29884 -20794
-15890 56103
10953 34603
48303 46414
30841 -71105
-14277 50249
6798 -29906
42926 4956
56485 -72738
-29679 27127
-29857 -53415
-19286 -18096
16910 13964
-14711 56830
31156 -50254
-12415 -41102
86638 4677
-61490 -97404
-59672 14021
-98533 85886
77725 -35483
-29719 50421
29833 -30769
19191 92936
-57533 64941
73933 38651
76229 -64197
-34795 -46412
-12050 33784
17865 20232
42919 25394
93614 90458
-57547 -75226
94128 -83734
-37711 -75175
-43547 -57517
-77713 30397
12595 34183
15029 -767
-15318 -10540
-21143 29650
-56777 87525
-52997 17174
-87156 -43420
39144 37134
31934 -10590
31165 43456
-31325 -97957
-63963 82490
-85693 16385
-62412 -34396
80318 68103
56109 -17833
75335 -26508
-34315 62391
-61238 80717
-12504 46608
-93481 -16463
28630 27443
50921 37838
13986 62880
-512 81650
-36227 73136
18120 -9573
52034 -320
70447 -77648
72969 -24995
-56448 60447
-20572 36005
-22485 64477
82515 74874
21778 -39862
-10783 -33026
31707 40788
-45840 -57666
43528 -62404
-70543 -49866
95978 -63895
-61462 43153
4059 21207
52445 -5468
-82638 -39533
-45419 -97595
-94723 -48372
-9760 -22870
96425 -46477
-63340 -15424
84793 94680
87799 76073
83317 -22063
-64105 56099
-90739 12368
-97328 89553
-24917 89149
99147 50979
49873 -63974
-15666 -59595
-40709 80588
-78555 -31516
-73034 66336
-20996 -68550
-69291 9280
-18653 23698
53372 76855
52407 -31156
-68063 -4749
-95880 -81193
26673 40558
3631 -27684
-39018 -5562
45577 -10523
-93551 -45045
95728 -13740
-62189 -93166
34985 94751
-71824 90752
2170 67850
-84196 -40334
8380 54788
-1445 -96673
680 88954
89017 -82722
-79525 -15397
-80149 33204
94576 43405
42522 11984
28399 -35435
77100 -28757
-87404 -91035
59380 -68013
-66093 14133
-50009 54660
-87254 -74788
-57240 -64267
-6377 24551
73775 -70198
-26484 -3765
44475 51350
-89686 -62983
4157 99752
-28139 82749
-58896 4891
74807 -73876
90903 10066
-61143 94240
77622 -1649
75040 -54630
17407 -20078
-76419 -72267
15219 78687
15440 -10257
-55765 11297
-38219 57410
-94288 -52194
8787 31376
-71558 71343
-50731 -58667
-53778 67618
16750 81643
46346 95180
-91716 -93185
-19006 50935
73862 -7171
-22276 5945
38479 46939
-98157 -57660
-85158 12905
-56217 -86297
-39845 71002
-77610 -61740
93314 -95308
-63242 -48244
83239 63236
-3999 -94525
91216 31355
69984 -3835
-45976 -21835
44155 -69011
-67835 65321
38518 83307
59819 82475
22561 -28758
4227 92237
-75877 39616
-98720 41784
-6351 -39707
62172 -31640
-29178 92372
-13343 -4557
1241 -98303
8272 96519
96397 -79022
10280 -68040
-60825 -22157
83189 -61280
28803 93727
-59100 38707
53010 36246
-21216 1167
-64879 -26965
90077 14976
39244 -95631
-23091 -77995
-18186 -69064
-36253 -12712
-60409 -80740
-89629 -69803
-9101 -73797
90239 57092
-39264 -26833
-37467 -13789
16265 24833
-96569 -32359
-44632 69878
71553 -98846
-64014 -78792
47578 10606
91823 80531
88142 -81704
-4891 -46197
44377 -98206
547 42681
-36391 39233
22458 88658
-99433 74523
-77073 82515
5945 96356
-48815 56455
83799 74948
-16626 60081
-13562 -55070
3867 -57778
54693 -55302
27613 -37002
76725 -24927
-76800 -43567
24533 -10079
17226 69717
26151 33940
63499 51594
85611 -54106
17078 -43313
-56094 61714
-36458 77929
-76976 34251
96451 58481
-89560 96184
-92648 40879
-60191 -53103
73043 32101
64903 92928
-36910 -59649
-99101 6049
55540 92213
53372 -32353
-71835 53045
8007 -37946
32919 1601
-95035 -41892
-55768 28608
-78881 -44678
6555 80046
-12086 18157
-54054 -93349
-32199 -71996
56440 39284
-40241 87294
-33637 91072
66688 33426
95094 42188
-68662 -54311
-19558 10849
19898 -99185
-19162 59041
31386 48851
4484 34247
-24399 6800
-128 -45893
98867 66922
-66484 46452
12400 18874
-79661 -75386
10656 23696
84755 72452
25667 -27378
29422 50152
32027 -64104
17753 50845
63103 54006
-39371 65289
-59372 -27738
-27667 -41763
89408 -40204
-62848 -41392
57988 4313
54086 -66739
2006 -18961
-20270 52959
-79948 16776
65652 30734
-3653 -91750
99503 -78735
43470 -5475
-79491 27275
-29151 -15530
-70890 -98710
83408 61518
98569 80285
-22567 61228
-12010 -24018
-64288 -89660
77561 -70087
85133 67745
30954 43267
-3156 -37928
54097 7048
-9515 -82259
43701 76188
-67815 -23701
34566 81429
-22151 13976
-11341 -5159
-81007 -75559
-63564 -47151
-55640 42312
-76016 -55837
43680 88461
72553 -62768
66996 15882
12959 -28870
-99738 73894
-48265 -95956
91762 -14446
56037 39415
63307 -13058
-41078 94198
70699 68637
-83413 -85087
-77102 -68598
75608 88844
75852 27554
19766 58908
14234 49586
93577 85745
99873 -27021
-59238 -18867
-37750 13606
-25146 -83347
-13444 -56203
49273 -14620
88617 -15597
22858 -4538
-76684 21315
-10707 -18743
-98796 -20059
-24473 -26048
-68249 -32371
-11154 -44923
46523 -39195
37374 41794
-99037 -30162
1105 45280
-72109 94275
51622 83052
-45149 38849
88353 -80015
14990 2416
-76371 -39749
3254 -55429
43267 11246
42155 83849
91436 48831
98215 75290
-92449 48651
-77941 76487
-72426 -4525
47369 -11941
59640 69219
-95140 16072
94392 -58195
68725 -97446
-23195 -50570
-97039 -3715
-7316 -10723
82748 70792
26664 -54199
50306 1052
-80393 93166
-41492 78217
86248 13034
92883 -27283
89849 -30215
-18192 -7138
-12809 -81437
79128 16097
45470 61114
-17245 -89127
-80483 19748
-71191 75163
9568 52732
-9598 -63589
22161 18770
-3912 30854
-77674 44108
52462 -68561
54647 -25170
12065 -28586
-64884 89228
6242 26233
18458 91386
-99962 38416
70782 46018
-48350 55294
74069 90042
51814 59967
71335 -1021
42439 71916
-52256 -29842
73379 31256
68415 -45579
73562 25857
35716 -69649
-54096 -4089
81428 68502
-21689 72742
-12906 -30625
-80422 -28932
9363 -9710
43780 -42220
-52354 -66086
18066 73407
-60238 -3510
66667 62044
56996 93109
-19803 71419
48540 12266
30384 -71748
-51808 70363
63108 26757
-75449 -93697
-98139 19145
96086 -68875
74097 56050
62490 -12074
89165 -43
54088 -47326
-18289 -38202
41054 -62446
65993 98387
-54198 68289
-55874 87008
59546 78181
87622 74401
-84697 -87697
-34571 -96192
-49223 68620
-90991 -56746
17893 68321
53883 -77629
27485 36559
-12313 -52832
-31935 17902
66005 -42949
65081 33733
-89660 60323
-15491 12582
-31541 97788
-25277 -11000
-10654 59100
-91247 49308
63619 24028
-31872 60870
-46071 -17438
73405 33119
-81798 50530
57338 51964
76052 -32767
-4116 -46246
-27744 -56627
-39876 -83340
-22015 72807
94001 61749
-78123 70380
-72973 -66749
-32999 -52746
26874 86567
72903 -66751
28204 76178
98285 38521
-70059 39017
81374 44009
34633 -74638
14032 50704
-25060 -66529
-73844 -26879
-2918 -46841
-81277 -69963
38092 -68855
-87190 -62593
252 34576
95018 -4705
82408 -35937
-65320 17415
-63943 -10107
-63441 -66851
90469 22825
-46562 57255
-23316 37317
30456 -28236
61166 -42041
-25157 -39767
-81965 -47916
-80396 80658
-59830 43891
-41491 -39823
-38404 40834
73856 -25634
91904 34293
25986 24284
-93746 6742
23541 95196
37133 -73545
-10341 51486
16792 -30338
-61535 90177
50021 -25293
8870 -70336
-36877 4510
37211 -17
-34535 30789
53743 9774
-31059 -89020
-48725 -6778
40033 14742
-77161 -88964
95265 -73788
-28758 60431
21753 14899