Source

REMAINS / primes.wi

Full commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
631 958
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                        #########################                                                                  ~@#~@#~@#~@#~@#~@#~@#~@#~                                                                  ~@#~@#~@#~@#~@#~@#~@#~@#~                                                                  ~@#~@#~@#~@#~@#~@#~@#~@#~                                                                  ~@#~@#~@#~@#~@#~@#~@#~@#~                                                          
                                                                                                                                                                                       ###########################                                                                #~@#~@#~@#~@#~@#~@#~@#~@#~@                                                                #~@#~@#~@#~@#~@#~@#~@#~@#~@                                                                #~@#~@#~@#~@#~@#~@#~@#~@#~@                                                                #~@#~@#~@#~@#~@#~@#~@#~@#~@                                                         
                                                                                                                                                                                      #                           #                                                              @                           #                                                              @                           #                                                              @                           #                                                              @                           #                                                        
                                                                                                                                                                                     # ########################### #                                                            ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~                                                            ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~                                                            ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~                                                            ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~                                                       
                                                                                                                                                                               #### #################################                                                     ~@#~ #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@                                                     ~@#~ #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@                                                     ~@#~ #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@                                                     ~@#~ #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@                                                      
                                                                                                                                                                              #    #                                 #                                                   #    @                                 #                                                   #    @                                 #                                                   #    @                                 #                                                   #    @                                 #                                                     
                                                                                                                                                                             #  #   #################################   #                                               @  ~   #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@   @                                               @  ~   #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@   @                                               @  ~   #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@   @                                               @  #   #~@#~@#~@#~@#~@#~@#~@#~@#~@#~@#~@   @                                                  
                                                                                                                                                                            #  # #   # ########################### #   # #                                             ~  # #   ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~   ~ ~                                             ~  # #   ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~   ~ ~                                             ~  # #   ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~   ~ ~                                             ~  # #   ~ #~@#~@#~@#~@#~@#~@#~@#~@#~@ ~   ~ ~                                                 
                                                                                                                                                                           #  ## ##   #                           #   ## ##                                           #  @@ @@   @                           #   ## ##                                           #  @@ @@   @                           #   ## ##                                           #  @@ @@   @                           #   ## ##                                           #  ## ##   @                           #   ## ##                                                
                                                                                                                                                                          #  # # # #   ###########################   # # # #                                         @  ~ ~ ~ ~   #~@#~@#~@#~@#~@#~@#~@#~@#~@   @ @ @ @                                         @  ~ ~ ~ ~   #~@#~@#~@#~@#~@#~@#~@#~@#~@   @ @ @ @                                         @  ~ ~ ~ ~   #~@#~@#~@#~@#~@#~@#~@#~@#~@   @ @ @ @                                         @  # # # #   #~@#~@#~@#~@#~@#~@#~@#~@#~@   @ @ @ @                                               
                                                                                                                                                                         #  # ## ## #   #########################   # ## ## #                                       ~  # ## ## #   ~@#~@#~@#~@#~@#~@#~@#~@#~   # ~~ ~~ #                                       ~  # ## ## #   ~@#~@#~@#~@#~@#~@#~@#~@#~   # ~~ ~~ #                                       ~  # ## ## #   ~@#~@#~@#~@#~@#~@#~@#~@#~   # ~~ ~~ #                                       ~  # ## ## #   ~@#~@#~@#~@#~@#~@#~@#~@#~   # ~~ ~~ #                                              
                                                                                                                                                                        #  ## ## ## ##                             ## ## ## ##                                     #  ~~ @@ @@ ~~                             @@ ## ## @@                                     #  ~~ @@ @@ ~~                             @@ ## ## @@                                     #  ~~ @@ @@ ~~                             @@ ## ## @@                                     #  ## ## ## ##                             @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ## ## ## ## ########################### @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ## ## ## ## ########################### @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ## ## ## ## ########################### @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ## ## ## ## ########################### @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ## ## ## ## ########################### @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ## ## ## ## ########################### @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ~~ @@ @@ ~~ ########################### @@ ## ## @@                                    #   ## ## ## ## ########################### @@ ## ## @@                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ~~ ~~ ## ########################### ~~ @@ @@ ~~                                    @   ## ## ## ## ########################### ~~ @@ @@ ~~                                             
                                                                                                                                                                       #   ## ## ## ## ########################### ## ## ## ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   @@ ## ## @@ ########################### ## ~~ ~~ ##                                    ~   ## ## ## ## ########################### ## ~~ ~~ ##                                             
                                                                                                                                                                       #   ## ## ## ##                             ## ## ## ##                                    #   ~~ @@ @@ ~~                             @@ ## ## @@                                    #   ~~ @@ @@ ~~                             @@ ## ## @@                                    #   ~~ @@ @@ ~~                             @@ ## ## @@                                    #   ## ## ## ##                             @@ ## ## @@                                             
                                                                                                                                                                       #    # ## ## #   #########################   # ## ## #                                     @    # ~~ ~~ #   #########################   ~ @@ @@ ~                                     @    # ~~ ~~ #   #########################   ~ @@ @@ ~                                     @    # ~~ ~~ #   #########################   ~ @@ @@ ~                                     @    # ## ## #   ~#@~#@~#@~#@~#@~#@~#@~#@~   ~ @@ @@ ~                                              
                                                                                                                                                                       #     # # # #   ###########################   # # # #                                      ~     @ # # @   ###########################   # ~ ~ #                                      ~     @ # # @   ###########################   # ~ ~ #                                      ~     @ # # @   ###########################   # ~ ~ #                                      ~     # # # #   @~#@~#@~#@~#@~#@~#@~#@~#@~#   # ~ ~ #                                               
                                                                                                                                                                       #        #     #                           #     #                                         #        @     #                           #     #                                         #        @     #                           #     #                                         #        @     #                           #     #                                         #        #     #                           @     #                                                  
                                                                                                                                                                       #  ######  #  # ########################### #  # #                                         @  @#~@#~  #  # ########################### #  # @                                         @  @#~@#~  #  # ########################### #  # @                                         @  @#~@#~  #  # ########################### #  # @                                         @  ######  #  ~ @~#@~#@~#@~#@~#@~#@~#@~#@~# ~  # @                                                  
                                                                                                                                                                       # #       #  #################################    ##                                       ~ ~       #  #################################    ~#                                       ~ ~       #  #################################    ~#                                       ~ ~       #  #################################    ~#                                       ~ #       #  @~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#    ~#                                                
                                                                                                                                                                       # # ####### #                                 ###   ###                                    # # ####### #                                 ###   @~#                                    # # ####### #                                 ###   @~#                                    # # ####### #                                 ###   @~#                                    # # ####### #                                 @~#   @~#                                             
                                                                                                                                                                       # # #######  #################################   ##    #                                   @ @ #######  #################################   ##    @                                   @ @ #######  #################################   ##    @                                   @ @ #######  #################################   ##    @                                   @ # #######  @~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#   @~    @                                            
                                                                                                                                                                       # # ####   #  # ########################### #  #   ###  #                                  ~ ~ ####   #  # ########################### #  #   ###  ~                                  ~ ~ ####   #  # ########################### #  #   ###  ~                                  ~ ~ ####   #  # ########################### #  #   ###  ~                                  ~ # ####   #  ~ @~#@~#@~#@~#@~#@~#@~#@~#@~# ~  #   #@~  ~                                           
                                                                                                                                                                       # # #    #     #                           #     #    #  #                                 # # #    #     #                           #     #    #  #                                 # # #    #     #                           #     #    #  #                                 # # #    #     #                           #     #    #  #                                 # # #    #     #                           @     #    #  #                                          
                                                                                                                                                                       # #   # # # #   ###########################   # # # #  #  #                                @ @   @ @ @ @   ###########################   @ @ @ @  #  @                                @ @   @ @ @ @   ###########################   @ @ @ @  #  @                                @ @   @ @ @ @   ###########################   @ @ @ @  #  @                                @ #   # # # #   @~#@~#@~#@~#@~#@~#@~#@~#@~#   @ @ @ @  @  @                                         
                                                                                                                                                                       # #  # ## ## #   #########################   # ## ## #  # #                                ~ ~  ~ ~~ ~~ ~   #########################   ~ ~~ ~~ ~  # ~                                ~ ~  ~ ~~ ~~ ~   #########################   ~ ~~ ~~ ~  # ~                                ~ ~  ~ ~~ ~~ ~   #########################   ~ ~~ ~~ ~  # ~                                ~ #  # ## ## #   ~#@~#@~#@~#@~#@~#@~#@~#@~   ~ ~~ ~~ ~  ~ ~                                         
                                                                                                                                                                       # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                # # ## ## ## ## ########################### ## ## ## ## # #                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ @ @@ @@ @@ @@ ########################### @@ @@ @@ @@ # @                                @ # ## ## ## ## ########################### @@ @@ @@ @@ @ @                                         
                                                                                                                                                                       # # ## ## ## ## ########################### ## ## ## ## # #                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ ~ ~~ ~~ ~~ ~~ ########################### ~~ ~~ ~~ ~~ # ~                                ~ # ## ## ## ## ########################### ~~ ~~ ~~ ~~ ~ ~                                         
                                                                                                                                                                       # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                # # ## ## ## ##                             ## ## ## ## # #                                         
                                                                                                                                                                       # #  # ## ## #   #########################   # ## ## #  # #                                @ @  @ @@ @@ @   #@~#@~#@~#@~#@~#@~#@~#@~#   @ @@ @@ @  # @                                @ @  @ @@ @@ @   #@~#@~#@~#@~#@~#@~#@~#@~#   @ @@ @@ @  # @                                @ @  @ @@ @@ @   #@~#@~#@~#@~#@~#@~#@~#@~#   @ @@ @@ @  # @                                @ #  # ## ## #   #@~#@~#@~#@~#@~#@~#@~#@~#   @ @@ @@ @  @ @                                         
                                                                                                                                                                       #  #  # # # #   ###########################   # # # #  #  #                                ~  ~  ~ ~ ~ ~   ~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~ ~ ~ ~  #  ~                                ~  ~  ~ ~ ~ ~   ~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~ ~ ~ ~  #  ~                                ~  ~  ~ ~ ~ ~   ~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~ ~ ~ ~  #  ~                                ~  #  # # # #   ~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~ ~ ~ ~  ~  ~                                         
                                                                                                                                                                       #   #  ## ##   #                           #   ## ##  #  #                                 #   #  ## ##   @                           ~   ## ##  #  #                                 #   #  ## ##   @                           ~   ## ##  #  #                                 #   #  ## ##   @                           ~   ## ##  #  #                                 #   #  ## ##   @                           ~   ## ##  #  #                                          
                                                                                                                                                                        #   #  # #   # ########################### #   # #  #  #                                   @   @  @ @   # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #   @ @  #  @                                   @   @  @ @   # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #   @ @  #  @                                   @   @  @ @   # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #   @ @  #  @                                   @   #  # #   # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #   @ @  @  @                                           
                                                                                                                                                                         #   #  #   #################################   #  #  #                                     ~   ~  ~   ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~  #  ~                                     ~   ~  ~   ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~  #  ~                                     ~   ~  ~   ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~  #  ~                                     ~   #  #   ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@   ~  ~  ~                                            
                                                                                                                                                                          #  #  #  #                                 #  # #  #                                       #  #  #  @                                 ~  # #  #                                       #  #  #  @                                 ~  # #  #                                       #  #  #  @                                 ~  # #  #                                       #  #  #  @                                 ~  # #  #                                             
                                                                                                                                                                           #  #  #  ################################# # # # #                                         @  @  @  ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@ # @ # @                                         @  @  @  ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@ # @ # @                                         @  @  @  ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@ # @ # @                                         @  #  #  ~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@~#@ # @ @ @                                              
                                                                                                                                                                            #  #  #  # ########################### #  # # # #                                          ~  ~  ~  # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #  @ ~ # ~                                          ~  ~  ~  # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #  @ ~ # ~                                          ~  ~  ~  # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #  @ ~ # ~                                          ~  #  #  # ~#@~#@~#@~#@~#@~#@~#@~#@~#@ #  @ ~ ~ ~                                              
                                                                                                                                                                             #  #  #  #                           #  #  # # #                                           #  #  #  @                           ~  ~  # # #                                           #  #  #  @                           ~  ~  # # #                                           #  #  #  @                           ~  ~  # # #                                           #  #  #  @                           ~  ~  # # #                                              
                                                                                                                                                                              #  #  #  ###########################  #  #  # #                                            @  @  @  ~#@~#@~#@~#@~#@~#@~#@~#@~#@  #  @  # @                                            @  @  @  ~#@~#@~#@~#@~#@~#@~#@~#@~#@  #  @  # @                                            @  @  @  ~#@~#@~#@~#@~#@~#@~#@~#@~#@  #  @  # @                                            @  #  #  ~#@~#@~#@~#@~#@~#@~#@~#@~#@  #  @  @ @                                              
                                                                                                                                                                               #  #  #  #########################  #  #  #  #                                             ~  ~  ~  #@~#@~#@~#@~#@~#@~#@~#@~#  @  ~  #  ~                                             ~  ~  ~  #@~#@~#@~#@~#@~#@~#@~#@~#  @  ~  #  ~                                             ~  ~  ~  #@~#@~#@~#@~#@~#@~#@~#@~#  @  ~  #  ~                                             ~  #  #  #@~#@~#@~#@~#@~#@~#@~#@~#  @  ~  ~  ~                                              
                                                                                                                                                                                #  #  #                           #  #  #  #                                               #  #  #                           ~  #  #  #                                               #  #  #                           ~  #  #  #                                               #  #  #                           ~  #  #  #                                               #  #  #                           ~  #  #  #                                               
                                                                                                                                                                                 #  #  #######                   #  #  #  #                                                 @  @  @~#@~#@                   #  @  #  @                                                 @  @  @~#@~#@                   #  @  #  @                                                 @  @  @~#@~#@                   #  @  #  @                                                 @  #  #######                   #  @  @  @                                                
                                                                                                                                                                                  #  #        #                 #  #  #  #                                                   ~  ~        ~                 @  ~  #  ~                                                   ~  ~        ~                 @  ~  #  ~                                                   ~  ~        ~                 @  ~  #  ~                                                   ~  #        #                 @  ~  ~  ~                                                 
                                                                                                                                                                                   #  #   ##  #  ##      ##    #  #  #  #                                                     #  #   @~  #  @~      ~@    ~  #  #  #                                                     #  #   @~  #  @~      ~@    ~  #  #  #                                                     #  #   @~  #  @~      ~@    ~  #  #  #                                                     #  #   ##  #  ##      ~@    ~  #  #  #                                                  
                                                                                                                                                                                    #  # #  # # #  #    #  # ##  #  #  #                                                       @  @ #  # @ #  #    #  # @#  @  #  @                                                       @  @ #  # @ #  #    #  # @#  @  #  @                                                       @  @ #  # @ #  #    #  # @#  @  #  @                                                       @  # #  # # #  #    #  # @#  @  @  @                                                   
                                                                                                                                                                                     #  ### #  ### #    # ###   #  #  #                                                         ~  ~~~ #  ~~~ #    # ~~~   ~  #  ~                                                         ~  ~~~ #  ~~~ #    # ~~~   ~  #  ~                                                         ~  ~~~ #  ~~~ #    # ~~~   ~  #  ~                                                         ~  ### #  ### #    # ~~~   ~  ~  ~                                                    
                                                                                                                                                                                    ###  #  #   #  #    #  #   #  #   #                                                        #~#  #  #   #  #    #  #   #  #   #                                                        #~#  #  #   #  #    #  #   #  #   #                                                        #~#  #  #   #  #    #  #   #  #   #                                                        #~#  #  #   #  #    #  #   #  #   #                                                    
                                                                                                                                                                                   # # #  ###    ###    ###   #  #    #                                                       @ ~ #  ###    ###    ###   @  #    @                                                       @ ~ #  ###    ###    ###   @  #    @                                                       @ ~ #  ###    ###    ###   @  #    @                                                       @ ~ #  ###    ###    ###   @  @    @                                                    
                                                                                                                                                                                   #   #     #      #  #      #  #    #                                                       ~   #     @      @  @      ~  #    ~                                                       ~   #     @      @  @      ~  #    ~                                                       ~   #     @      @  @      ~  #    ~                                                       ~   #     #      #  @      ~  ~    ~                                                    
                                                                                                                                                                                    ####     #      #  #  ##  #  #    #                                                        ####     ~      ~  ~  ~@  #  #    #                                                        ####     ~      ~  ~  ~@  #  #    #                                                        ####     ~      ~  ~  ~@  #  #    #                                                        ####     #      #  ~  ~@  #  #    #                                                    
                                                                                                                                                                                        ###  #      #  # #  # #  #    #                                                            @~#  #      #  # #  # @  #    @                                                            @~#  #      #  # #  # @  #    @                                                            @~#  #      #  # #  # @  #    @                                                            @~#  #      #  # #  # @  @    @                                                    
                                                                                                                                                                                           # #      #  # # ###   #    #                                                               # #      #  # # ~~~   #    ~                                                               # #      #  # # ~~~   #    ~                                                               # #      #  # # ~~~   #    ~                                                               # #      #  # # ~~~   ~    ~                                                    
                                                                                                                                                                                         # #  #     # #  #  #    #    #                                                             # #  #     # #  #  #    #    #                                                             # #  #     # #  #  #    #    #                                                             # #  #     # #  #  #    #    #                                                             # #  #     # #  #  #    #    #                                                    
                                                                                                                                                                                        ####  #     # #  ###     #    #                                                            ####  #     # #  ###     #    @                                                            ####  #     # #  ###     #    @                                                            ####  #     # #  ###     #    @                                                            ####  #     # #  ###     @    @                                                    
                                                                                                                                                                                         # #  #     # # #    ##  #    #                                                             @ #  @     @ @ @    ##  #    ~                                                             @ #  @     @ @ @    ##  #    ~                                                             @ #  @     @ @ @    ##  #    ~                                                             @ #  #     # @ @    @#  ~    ~                                                    
                                                                                                                                                                                        ## ##  #    # #  #  #  # #    #                                                            ~@ ##  ~    ~ ~  ~  #  # #    #                                                            ~@ ##  ~    ~ ~  ~  #  # #    #                                                            ~@ ##  ~    ~ ~  ~  #  # #    #                                                            ~@ ##  #    # ~  ~  ~  # #    #                                                    
                                                                                                                                                                                       # ### #  #   #  # #  # ###     #                                                           # @## #  #   #  # #  # ###     @                                                           # @## #  #   #  # #  # ###     @                                                           # @## #  #   #  # #  # ###     @                                                           # @## #  #   #  # #  # @@@     @                                                    
                                                                                                                                                                                    # #       # #   #  # #  #  #      #                                                        # #       # #   #  # #  #  #      ~                                                        # #       # #   #  # #  #  #      ~                                                        # #       # #   #  # #  #  #      ~                                                        # #       # #   #  # #  #  ~      ~                                                    
                                                                                                                                                                                   ####      ####   #  # #  ###       #                                                       ####      ####   #  # #  ###       #                                                       ####      ####   #  # #  ###       #                                                       ####      ####   #  # #  ###       #                                                       ####      ####   #  # #  ###       #                                                    
                                                                                                                                                                                    # #       # #   #  # # #      ##  #                                                        # #       # #   #  # # #      ##  @                                                        # #       # #   #  # # #      ##  @                                                        # #       # #   #  # # #      ##  @                                                        # #       # #   #  # # #      ##  @                                                    
                                                                                                                                                                                   ## ##     ## ##  #  # #  #    #  # #                                                       @# ##     @# ##  @  @ @  #    @  # ~                                                       @# ##     @# ##  @  @ @  #    @  # ~                                                       @# ##     @# ##  @  @ @  #    @  # ~                                                       @# ##     ## ##  #  @ @  @    @  # ~                                                    
                                                                                                                                                                                  # ### #   # ### #  # #  #  #   # ###                                                       ~ ### #   ~ ### #  ~ ~  ~  #   ~ ###                                                       ~ ### #   ~ ### #  ~ ~  ~  #   ~ ###                                                       ~ ### #   ~ ### #  ~ ~  ~  #   ~ ###                                                       ~ ### #   # ### #  # ~  ~  ~   ~ ###                                                     
                                                                                                                                                                               # #       # #       # #  # #   #  #  #                                                     # #       # #       # #  # #   #  #  @                                                     # #       # #       # #  # #   #  #  @                                                     # #       # #       # #  # #   #  #  @                                                     # #       # #       # #  # #   #  #  @                                                      
                                                                                                                                                                              ####      ####      ##### #  #  #  ###                                                     ####      ####      ##### #  #  #  ##~                                                     ####      ####      ##### #  #  #  ##~                                                     ####      ####      ##### #  #  #  ##~                                                     ####      ####      ##### #  #  #  ##~                                                       
                                                                                                                                                                               # #       # #       # #  #   # # #                                                         # #       # #       # #  #   # # #                                                         # #       # #       # #  #   # # #                                                         # #       # #       # #  #   # # #                                                         # #       # #       # #  #   # # #                                                          
                                                                                                                                                                              ## ##     ## ##     ## ##  #  # #  #                                                       ## ##     ## ##     ## ##  #  # #  #                                                       ## ##     ## ##     ## ##  #  # #  #                                                       ## ##     ## ##     ## ##  #  # #  #                                                       ## ##     ## ##     ## ##  #  # #  #                                                         
                                                                                                                                                                             # ### #   # ### #   # ### #  # #  # #                                                      @ ### #   @ ### #   @ ### #  @ @  # @                                                      @ ### #   @ ### #   @ ### #  @ @  # @                                                      @ ### #   @ ### #   @ ### #  @ @  # @                                                      @ ### #   # ### #   # ### #  @ @  @ @                                                         
                                                                                                                                                                          # #       # #       # #       # #  # # #                                                   # ~       # ~       # ~       # ~  ~ # ~                                                   # ~       # ~       # ~       # ~  ~ # ~                                                   # ~       # ~       # ~       # ~  ~ # ~                                                   # ~       # #       # #       # ~  ~ ~ ~                                                         
                                                                                                                                                                         ####      ##### #   ####      ####  # #  #                                                 ###~      ###~# #   ###~      ###~  # #  #                                                 ###~      ###~# #   ###~      ###~  # #  #                                                 ###~      ###~# #   ###~      ###~  # #  #                                                 ###~      ##### #   ####      ###~  # #  #                                                        
                                                                                                                                                                          # #       # #       # #       # #  #  #  #                                                 # ~       # ~       # ~       # ~  #  #  #                                                 # ~       # ~       # ~       # ~  #  #  #                                                 # ~       # ~       # ~       # ~  #  #  #                                                 # ~       # #       # #       # ~  #  #  #                                                       
                                                                                                                                                                         ## ##     ## ##     ## ##     ## ##  #  #  #                                               ## ~#     ## ~#     ## ~#     ## ~#  #  #  #                                               ## ~#     ## ~#     ## ~#     ## ~#  #  #  #                                               ## ~#     ## ~#     ## ~#     ## ~#  #  #  #                                               ## ~#     ## ##     ## ##     ## ~#  #  #  #                                                      
                                                                                                                                                                        # ### #   # ### #   # ### #   # ### #  #  # #                                              # ##~ #   # ##~ #   # ##~ #   # ##~ #  #  # #                                              # ##~ #   # ##~ #   # ##~ #   # ##~ #  #  # #                                              # ##~ #   # ##~ #   # ##~ #   # ##~ #  #  # #                                              # ##~ #   # ### #   # ### #   # ##~ #  #  # #                                                      
                                                                                                                                                                     # #       # #       # #       # #       # #  # #                                           # @       # @       # @       # @       # @  # @                                           # @       # @       # @       # @       # @  # @                                           # @       # @       # @       # @       # @  # @                                           # @       # #       # #       # @       # @  @ @                                                      
                                                                                                                                                                #   ####      ####      #####     ####      ####  # #                                      #   ~~~@      ~~~@      ~~~@#     ~~~@      ~~~@  # ~                                      #   ~~~@      ~~~@      ~~~@#     ~~~@      ~~~@  # ~                                      #   ~~~@      ~~~@      ~~~@#     ~~~@      ~~~@  # ~                                      #   ~~~@      ####      #####     ~~~@      ~~~@  ~ ~                                                      
                                                                                                                                                                     # #       # #       # #       # #       # #  #  #                                          # @       # @       # @       # @       # @  #  #                                          # @       # @       # @       # @       # @  #  #                                          # @       # @       # @       # @       # @  #  #                                          # @       # #       # #       # @       # @  #  #                                                     
                                                                                                                                                                    ## ##     ## ##     ## ##     ## ##     ## ##  #  #                                        ## @#     ## @#     ## @#     ## @#     ## @#  #  #                                        ## @#     ## @#     ## @#     ## @#     ## @#  #  #                                        ## @#     ## @#     ## @#     ## @#     ## @#  #  #                                        ## @#     ## ##     ## ##     ## @#     ## @#  #  #                                                    
                                                                                                                                                                   # ### #   # ### #   # ### #   # ### #   # ### #  # #                                       # #~@ #   # #~@ #   # #~@ #   # #~@ #   # #~@ #  # #                                       # #~@ #   # #~@ #   # #~@ #   # #~@ #   # #~@ #  # #                                       # #~@ #   # #~@ #   # #~@ #   # #~@ #   # #~@ #  # #                                       # #~@ #   # ### #   # ### #   # #~@ #   # #~@ #  # #                                                    
                                                                                                                                                                # #       # #       # #       # #       # #       # #  #                                   # #       # #       # #       # #       # #       # #  #                                   # #       # #       # #       # #       # #       # #  #                                   # #       # #       # #       # #       # #       # #  #                                   # #       # #       # #       # #       # #       # #  #                                                   
                                                                                                                                                               #####     ####      ####      #####     ####      ####  #                                  @@@##     @@@#      @@@#      @@@##     @@@#      ####  @                                  @@@##     @@@#      @@@#      @@@##     @@@#      ####  @                                  @@@##     @@@#      @@@#      @@@##     @@@#      ####  @                                  @@@##     ####      ####      @@@##     @@@#      @@@#  @                                                   
                                                                                                                                                                # #       # #       # #       # #       # #       # #   #        #                         ~ #       ~ #       ~ #       ~ #       ~ #       # #   ~        #                         ~ #       ~ #       ~ #       ~ #       ~ #       # #   ~        #                         ~ #       ~ #       ~ #       ~ #       ~ #       # #   ~        #                         ~ #       # #       # #       ~ #       ~ #       ~ #   ~        #                                         
                                                                                                                                                               ## ##     ## ##     ## ##     ## ##     ## ##     ## ##  #       # #                       #~ ##     #~ ##     #~ ##     #~ ##     #~ ##     ## ##  #       # #                       #~ ##     #~ ##     #~ ##     #~ ##     #~ ##     ## ##  #       # #                       #~ ##     #~ ##     #~ ##     #~ ##     #~ ##     ## ##  #       # #                       #~ ##     ## ##     ## ##     #~ ##     #~ ##     #~ ##  #       # #                                        
                                                                                                                                                              # ### #   # ### #   # ### #   # ### #   # ### #   # ### #  #      #  #                     # ~@# #   # ~@# #   # ~@# #   # ~@# #   # ~@# #   # ### #  #      #  #                     # ~@# #   # ~@# #   # ~@# #   # ~@# #   # ~@# #   # ### #  #      #  #                     # ~@# #   # ~@# #   # ~@# #   # ~@# #   # ~@# #   # ### #  #      #  #                     # ~@# #   # ### #   # ### #   # ~@# #   # ~@# #   # ~@# #  #      #  #                                       
                                                                                                                                                           # #       # #       # #       # #       # #       # #       # #      #  # #                # #       # #       # #       # #       # #       # #       # #      #  # #                # #       # #       # #       # #       # #       # #       # #      #  # #                # #       # #       # #       # #       # #       # #       # #      #  # #                # #       # #       # #       # #       # #       # #       # #      #  # #                                     
                                                                                                                                                          ####      ####      #####     ####      ####      ####      ####       #  ###              ####      ####      #####     ####      ####      ####      ####       #  ###              ####      ####      #####     ####      ####      ####      ####       #  ###              ####      ####      #####     ####      ####      ####      ####       #  ###              ####      ####      #####     ####      ####      ####      ####       #  ###                                    
                                                                                                                                                           # #       # #       # #       # #       # #       # #       # #  #   ###  #                @ #       @ #       @ #       @ #       @ #       # #       @ #  #   ###  #                @ #       @ #       @ #       @ #       @ #       # #       @ #  #   ###  #                @ #       @ #       @ #       @ #       @ #       # #       @ #  #   ###  #                # @       # #       # #       @ #       @ #       @ #       @ #  #   ###  #                                     
                                                                                                                                                          ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #               ~@ ##     ~@ ##     ~@ ##     ~@ ##     ~@ ##     ## ##     ~@ ### #   #   #               ~@ ##     ~@ ##     ~@ ##     ~@ ##     ~@ ##     ## ##     ~@ ### #   #   #               ~@ ##     ~@ ##     ~@ ##     ~@ ##     ~@ ##     ## ##     ~@ ### #   #   #               ## @~     ## ##     ## ##     ~@ ##     ~@ ##     ~@ ##     ~@ ### #   #   #                                     
                                                                                                                                                         # ### #   # ### #   # ### #   # ### #   # ### #   # ### #   # ### #  # # #  #              # @## #   # @## #   # @## #   # @## #   # @## #   # ### #   # @## #  # # #  #              # @## #   # @## #   # @## #   # @## #   # @## #   # ### #   # @## #  # # #  #              # @## #   # @## #   # @## #   # @## #   # @## #   # ### #   # @## #  # # #  #              # ##@ #   # ### #   # ### #   # @## #   # @## #   # @## #   # @## #  # # #  #                                     
                                                                                                                                                      # #       # #       # #       # #       # #       # #       # #      #  # # #  #           # #       # #       # #       # #       # #       # #       # #      #  # # #  #           # #       # #       # #       # #       # #       # #       # #      #  # # #  #           # #       # #       # #       # #       # #       # #       # #      #  # # #  #           # #       # #       # #       # #       # #       # #       # #      #  # # #  #                                     
                                                                                                                                                     ####      #####     #####     ####      ####      #####     ####       #  ### # #          ####      #####     #####     ####      ####      #####     ####       #  ### # #          ####      #####     #####     ####      ####      #####     ####       #  ### # #          ####      #####     #####     ####      ####      #####     ####       #  ### # #          ####      #####     #####     ####      ####      #####     ####       #  ### # #                                     
                                                                                                                                                      # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #           # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #           # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #           # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #           # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #                                     
                                                                                                                                                     ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #           @# ##     @# ##     @# ##     @# ##     @# ##     ## ##     @# ### #   #   #   #           @# ##     @# ##     @# ##     @# ##     @# ##     ## ##     @# ### #   #   #   #           @# ##     @# ##     @# ##     @# ##     @# ##     ## ##     @# ### #   #   #   #           ## ##     ## #@     ## ##     @# ##     @# ##     @# ##     @# ### #   #   #   #                                      
                                                                                                                                                    # ### #   # ### #   # ### #   # ### #   # ### #   # ### #   # ### #  # # #  #  ###         ~ ### #   ~ ### #   ~ ### #   ~ ### #   ~ ### #   # ### #   ~ ### #  # # #  #  ###         ~ ### #   ~ ### #   ~ ### #   ~ ### #   ~ ### #   # ### #   ~ ### #  # # #  #  ###         ~ ### #   ~ ### #   ~ ### #   ~ ### #   ~ ### #   # ### #   ~ ### #  # # #  #  ###         # ### #   # ### ~   # ### #   ~ ### #   ~ ### #   ~ ### #   ~ ### #  # # #  #  ###                                     
                                                                                                                                                 # #       # #       # #       # #       # #       # #       # #      #  # # #  #   #       # #       # #       # #       # #       # #       # #       # #      #  # # #  #   #       # #       # #       # #       # #       # #       # #       # #      #  # # #  #   #       # #       # #       # #       # #       # #       # #       # #      #  # # #  #   #       # #       # #       # #       # #       # #       # #       # #      #  # # #  #   #                                      
                                                                                                                                                #####     #####     #####     #####     ####      ####      ####       #  ### # #   @      #####     #####     #####     #####     ####      ####      ####       #  ### # #   @      #####     #####     #####     #####     ####      ####      ####       #  ### # #   @      #####     #####     #####     #####     ####      ####      ####       #  ### # #   @      #####     #####     #####     #####     ####      ####      ####       #  ### # #   @                                      
                                                                                                                                                 # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #    ~      # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #    ~      # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #    ~      # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #    ~      # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #    ~                                     
                                                                                                                                                ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    #      ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    #      ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    #      ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    #      ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    #                                      
                                                                                                                                               # ### #   # ### #   # ### #   # ### #   # ### #   # ### #   # ### #  # # #  #  ###  #      @ ### #   @ ### #   @ ### #   @ ### #   @ ### #   # ### #   @ ### #  # # #  #  ###  #      @ ### #   @ ### #   @ ### #   @ ### #   @ ### #   # ### #   @ ### #  # # #  #  ###  #      @ ### #   @ ### #   @ ### #   @ ### #   @ ### #   # ### #   @ ### #  # # #  #  ###  #      # ### #   # ### #   # ### @   @ ### #   @ ### #   @ ### #   @ ### #  # # #  #  ###  #                                       
                                                                                                                                            # #       # #       # #       # #       # #       # #       # #      #  # # #  #   #  #    ~ ~       # ~       # ~       # ~       # ~       # #       # ~      #  # # #  #   #  #    ~ ~       # ~       # ~       # ~       # ~       # #       # ~      #  # # #  #   #  #    ~ ~       # ~       # ~       # ~       # ~       # #       # ~      #  # # #  #   #  #    # #       # #       # #       ~ ~       # ~       # ~       # ~      #  # # #  #   #  #                                        
                                                                                                                                           ####      #####     ####      ####      ####      ####      #####      #  ### # #   # #    #~##      ###~#     ###~      ###~      ###~      ####      ###~#      #  ### # #   # #    #~##      ###~#     ###~      ###~      ###~      ####      ###~#      #  ### # #   # #    #~##      ###~#     ###~      ###~      ###~      ####      ###~#      #  ### # #   # #    ####      #####     ####      #~##      ###~      ###~      ###~#      #  ### # #   # #                                         
                                                                                                                                            # #       # #       # #       # #       # #       # #       # #  #   ###  #  # #    @      ~ #       # ~       # ~       # ~       # ~       # #       # ~  #   ###  #  # #    @      ~ #       # ~       # ~       # ~       # ~       # #       # ~  #   ###  #  # #    @      ~ #       # ~       # ~       # ~       # ~       # #       # ~  #   ###  #  # #    @      # #       # #       # #       ~ #       # ~       # ~       # ~  #   ###  #  # #    @                                          
                                                                                                                                           ## ##     ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    ~      #~ ##     ## ~#     ## ~#     ## ~#     ## ~#     ## ##     ## ~## #   #   #   #    ~      #~ ##     ## ~#     ## ~#     ## ~#     ## ~#     ## ##     ## ~## #   #   #   #    ~      #~ ##     ## ~#     ## ~#     ## ~#     ## ~#     ## ##     ## ~## #   #   #   #    ~      ## ##     ## ##     ## ##     #~ ##     ## ~#     ## ~#     ## ~## #   #   #   #    ~                                           
                                                                                                                                            ### #   # ### #   # ### #   # ### #   # ### #   # ### #   # ### #  # # #  #  ###  #        ~## #   # ##~ #   # ##~ #   # ##~ #   # ##~ #   # ### #   # ##~ #  # # #  #  ###  #        ~## #   # ##~ #   # ##~ #   # ##~ #   # ##~ #   # ### #   # ##~ #  # # #  #  ###  #        ~## #   # ##~ #   # ##~ #   # ##~ #   # ##~ #   # ### #   # ##~ #  # # #  #  ###  #        ### #   # ### #   # ### #   # ~## #   # ##~ #   # ##~ #   # ##~ #  # # #  #  ###  #                                            
                                                                                                                                                 # #       # #       # #       # #       # #       # #      #  # # #  #   #  #              @ @       # @       # @       # @       # #       # @      #  # # #  #   #  #              @ @       # @       # @       # @       # #       # @      #  # # #  #   #  #              @ @       # @       # @       # @       # #       # @      #  # # #  #   #  #              # #       # #       # #       @ @       # @       # @      #  # # #  #   #  #                                             
                                                                                                                                                ####      #####     ####      ####      ####      #####      #  ### # #   # #              #@~~      ~~~@#     ~~~@      ~~~@      ####      ~~~@#      #  ### # #   # #              #@~~      ~~~@#     ~~~@      ~~~@      ####      ~~~@#      #  ### # #   # #              #@~~      ~~~@#     ~~~@      ~~~@      ####      ~~~@#      #  ### # #   # #              ####      #####     ####      #@~~      ~~~@      ~~~@#      #  ### # #   # #                                              
                                                                                                                                                 # #       # #       # #       # #       # #       # #  #   ###  #  # #    #                @ #       # @       # @       # @       # #       # @  #   ###  #  # #    #                @ #       # @       # @       # @       # #       # @  #   ###  #  # #    #                @ #       # @       # @       # @       # #       # @  #   ###  #  # #    #                # #       # #       # #       @ #       # @       # @  #   ###  #  # #    #                                               
                                                                                                                                                ## ##     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    @                #@ ##     ## @#     ## @#     ## @#     ## ##     ## @## #   #   #   #    @                #@ ##     ## @#     ## @#     ## @#     ## ##     ## @## #   #   #   #    @                #@ ##     ## @#     ## @#     ## @#     ## ##     ## @## #   #   #   #    @                ## ##     ## ##     ## ##     #@ ##     ## @#     ## @## #   #   #   #    @                                                
                                                                                                                                                 ### #   # ### #   # ### #   # ### #   # ### #   # ### #  # # #  #  ~~~  ~                  @~# #   # #~@ #   # #~@ #   # #~@ #   # ### #   # #~@ #  # # #  #  ~~~  ~                  @~# #   # #~@ #   # #~@ #   # #~@ #   # ### #   # #~@ #  # # #  #  ~~~  ~                  @~# #   # #~@ #   # #~@ #   # #~@ #   # ### #   # #~@ #  # # #  #  ~~~  ~                  ### #   # ### #   # ### #   # @~# #   # #~@ #   # #~@ #  # # #  #  ~~~  ~                                                 
                                                                                                                                                      # #       # #       # #       # #       # #      #  # # #  #   #  #                        # #       # #       # #       # #       # #      #  # # #  #   #  #                        # #       # #       # #       # #       # #      #  # # #  #   #  #                        # #       # #       # #       # #       # #      #  # # #  #   #  #                        # #       # #       # #       # #       # #      #  # # #  #   #  #                                                  
                                                                                                                                                     ####      #####     #####     ####      ####       #  ### # #   # #                        ##@@      @@@##     @@@##     ####      @@@#       #  ### # #   # #                        ##@@      @@@##     @@@##     ####      @@@#       #  ### # #   # #                        ##@@      @@@##     @@@##     ####      @@@#       #  ### # #   # #                        ####      #####     #####     ##@@      @@@#       #  ### # #   # #                                                   
                                                                                                                                                      # #       # #       # #       # #       # #  #   ###  #  # #    #                          # ~       ~ #       ~ #       # #       ~ #  #   ###  #  # #    #                          # ~       ~ #       ~ #       # #       ~ #  #   ###  #  # #    #                          # ~       ~ #       ~ #       # #       ~ #  #   ###  #  # #    #                          # #       # #       # #       # ~       ~ #  #   ###  #  # #    #                                                    
                                                                                                                                                     ## ##     ## ##     ## ##     ## ##     ## ### #   #   #   #    #                          ## ~#     #~ ##     #~ ##     ## ##     #~ ### #   #   #   #    #                          ## ~#     #~ ##     #~ ##     ## ##     #~ ### #   #   #   #    #                          ## ~#     #~ ##     #~ ##     ## ##     #~ ### #   #   #   #    #                          ## ##     ## ##     ## ##     ## ~#     #~ ### #   #   #   #    #                                                     
                                                                                                                                                      ### #   # ### #   # ### #   # ### #   # ### #  # # #  #  @@@  @                            #@~ #   # ~@# #   # ~@# #   # ### #   # ~@# #  # # #  #  @@@  @                            #@~ #   # ~@# #   # ~@# #   # ### #   # ~@# #  # # #  #  @@@  @                            #@~ #   # ~@# #   # ~@# #   # ### #   # ~@# #  # # #  #  @@@  @                            ### #   # ### #   # ### #   # #@~ #   # ~@# #  # # #  #  @@@  @                                                      
                                                                                                                                                           # #       # #       # #       # #      #  # # #  #   ~  ~                                  # #       # #       # #       # #      #  # # #  #   ~  ~                                  # #       # #       # #       # #      #  # # #  #   ~  ~                                  # #       # #       # #       # #      #  # # #  #   ~  ~                                  # #       # #       # #       # #      #  # # #  #   ~  ~                                                       
                                                                                                                                                          ####      ####      ####      ####       #  ### # #   # #                                  ####      ####      ####      ####       #  ### # #   # #                                  ####      ####      ####      ####       #  ### # #   # #                                  ####      ####      ####      ####       #  ### # #   # #                                  ####      ####      ####      ####       #  ### # #   # #                                                        
                                                                                                                                                           # #       # #       # #       # #  #   ###  #  # #    #                                    # @       @ #       # #       @ #  #   ###  #  # #    #                                    # @       @ #       # #       @ #  #   ###  #  # #    #                                    # @       @ #       # #       @ #  #   ###  #  # #    #                                    # #       # #       # #       # @  #   ###  #  # #    #                                                         
                                                                                                                                                          ## ##     ## ##     ## ##     ## ### #   #   #   #    #                                    ## @~     ~@ ##     ## ##     ~@ ### #   #   #   #    #                                    ## @~     ~@ ##     ## ##     ~@ ### #   #   #   #    #                                    ## @~     ~@ ##     ## ##     ~@ ### #   #   #   #    #                                    ## ##     ## ##     ## ##     ## @~# #   #   #   #    #                                                          
                                                                                                                                                           ### #   # ### #   # ### #   # ### #  # # #  #  ###  #                                      ##@ #   # @## #   # ### #   # @## #  # # #  #  ###  #                                      ##@ #   # @## #   # ### #   # @## #  # # #  #  ###  #                                      ##@ #   # @## #   # ### #   # @## #  # # #  #  ###  #                                      ### #   # ### #   # ### #   # ##@ ~  # # #  #  ###  #                                                           
                                                                                                                                                                # #       # #       # #      #  # # #  #   @  @                                            # #       # #       # #      #  # # #  #   @  @                                            # #       # #       # #      #  # # #  #   @  @                                            # #       # #       # #      #  # # #  #   @  @                                            # #       # #       # #      @  @ # @  #   @  @                                                            
                                                                                                                                                               ####      #####     ####       #  ### # #   ~ ~                                            ####      #####     ####       #  ### # #   ~ ~                                            ####      #####     ####       #  ### # #   ~ ~                                            ####      #####     ####       #  ### # #   ~ ~                                            ####      #####     ####       #  ~~~ # #   ~ ~                                                             
                                                                                                                                                                # #       # #       # #  #   ###  #  # #    #                                              # #       # #       # #  #   ###  #  # #    #                                              # #       # #       # #  #   ###  #  # #    #                                              # #       # #       # #  #   ###  #  # #    #                                              # #       # #       # #  #   ###  #  # #    #                                                              
                                                                                                                                                               ## ##     ## ##     ## ### #   #   #   #    #                                              ## #@     ## ##     @# ### #   #   #   #    #                                              ## #@     ## ##     @# ### #   #   #   #    #                                              ## #@     ## ##     @# ### #   #   #   #    #                                              ## ##     ## ##     ## ### #   #   #   #    #                                                               
                                                                                                                                                                ### #   # ### #   # ### #  # # #  #  ###  #                                                ### ~   # ### #   ~ ### #  # # #  #  ###  #                                                ### ~   # ### #   ~ ### #  # # #  #  ###  #                                                ### ~   # ### #   ~ ### #  # # #  #  ###  #                                                ### #   # ### #   # ### #  # # #  #  ###  #                                                                
                                                                                                                                                                     # #       # #      #  # # #  #   #  #                                                      # #       # #      #  # # #  #   #  #                                                      # #       # #      #  # # #  #   #  #                                                      # #       # #      #  # # #  #   #  #                                                      # #       # #      #  # # #  #   #  #                                                                 
                                                                                                                                                                    #####     ####       #  ### # #   @ @                                                      #####     ####       #  ### # #   @ @                                                      #####     ####       #  ### # #   @ @                                                      #####     ####       #  ### # #   @ @                                                      #####     ####       #  ### # #   @ @                                                                  
                                                                                                                                                                     # #       # #  #   ###  #  # #    ~                                                        # #       # #  #   ###  #  # #    ~                                                        # #       # #  #   ###  #  # #    ~                                                        # #       # #  #   ###  #  # #    ~                                                        # #       # #  #   ###  #  # #    ~                                                                   
                                                                                                                                                                    ## ##     ## ### #   #   #   #    #                                                        ## ##     ## ### #   #   #   #    #                                                        ## ##     ## ### #   #   #   #    #                                                        ## ##     ## ### #   #   #   #    #                                                        ## ##     ## ### #   #   #   #    #                                                                    
                                                                                                                                                                     ### #   # ### #  # # #  #  ###  #                                                          ### @   @ ### #  # # #  #  ###  #                                                          ### @   @ ### #  # # #  #  ###  #                                                          ### @   @ ### #  # # #  #  ###  #                                                          ### #   # ### #  # # #  #  ###  #                                                                     
                                                                                                                                                                          # #      #  # # #  #   #  #                                                                ~ ~      #  # # #  #   #  #                                                                ~ ~      #  # # #  #   #  #                                                                ~ ~      #  # # #  #   #  #                                                                # #      #  # # #  #   #  #                                                                      
                                                                                                                                                                         ####       #  ### # #   # #                                                                #~##       #  ### # #   # #                                                                #~##       #  ### # #   # #                                                                #~##       #  ### # #   # #                                                                ####       #  ### # #   # #                                                                       
                                                                                                                                                                          # #  @   @@@  #  # #    @                                                                  ~ #  @   @@@  #  # #    @                                                                  ~ #  @   @@@  #  # #    @                                                                  ~ #  @   @@@  #  # #    @                                                                  # #  #   ###  #  # #    @                                                                        
                                                                                                                                                                         ## ### ~   ~   #   #    ~                                                                  #~ ### ~   ~   #   #    ~                                                                  #~ ### ~   ~   #   #    ~                                                                  #~ ### ~   ~   #   #    ~                                                                  ## ### #   #   #   #    ~                                                                         
                                                                                                                                                                          ###    # @ #  #  ###  #                                                                    ~##    # @ #  #  ###  #                                                                    ~##    # @ #  #  ###  #                                                                    ~##    # @ #  #  ###  #                                                                    ###    # # #  #  ###  #                                                                          
                                                                                                                                                                                 # # #  #   #  #                                                                            # # #  #   #  #                                                                            # # #  #   #  #                                                                            # # #  #   #  #                                                                            # # #  #   #  #                                                                           
                                                                                                                                                                             ###  ### # #   # #                                                                         ###  ### # #   # #                                                                         ###  ### # #   # #                                                                         ###  ### # #   # #                                                                         ###  ### # #   # #                                                                            
                                                                                                                                                                            #   #  #  ~ #    #                                                                         #   #  #  ~ #    #                                                                         #   #  #  ~ #    #                                                                         #   #  #  ~ #    #                                                                         #   #  #  # #    #                                                                             
                                                                                                                                                                            # # # #    #    @                                                                          # # # #    #    @                                                                          # # # #    #    @                                                                          # # # #    #    @                                                                          # # # #    #    @                                                                              
                                                                                                                                                                             ###  #   ~~~  ~                                                                            ###  #   ~~~  ~                                                                            ###  #   ~~~  ~                                                                            ###  #   ~~~  ~                                                                            ###  #   ~~~  ~                                                                               
                                                                                                                                                                            # # ##  #  #  #                                                                            # # ##  #  #  #                                                                            # # ##  #  #  #                                                                          ### # ##  #  #  #                                                                            # # ##  #  #  #                                                                                
                                                                                                                                                                            # #    # # # #                                                                             # #    # # # #                                                                             # #    # # # #                                                                          #    #    # # # #                                                                             # #    # # # #                                                                                 
                                                                                                                                                                            #      @ #  #                                                                              #      @ #  #                                                                              #      @ #  #                                                                           #         @ #  #                                                                              #      @ #  #                                                                                  
                                                                                                                                                                            #   ##  ~~ #                                                                               #  ###  ~~ #                                                                               #  ###  ~~ #                                                                             ######    ~~ #                                                                                #####  ~~ #                                                                                   
                                                                                                                                                                            #  #  #   @                                                                                 ##   #   @                                                                                # #   #   @                                                                                    #     @                                                                                      #   @                                                                                    
                                                                                                                                                                            #  #  #  ###                                                                                     #  ###                                                                                #    #  ###                                                                                    #   ###                                                                                     #  ###                                                                                   
                                                                                                                                                                             ##   #   #                                                                                      #   #                                                                                      #   #                                                                                      #   #                                                                                      #   #                                                                                    
                                                                                                                                                                                   #  #                                                                                       #  #                                                                                       #   #                                                                                      #  #                                                                                      #  #                                                                                     
                                                                                                                                                                                    #  ####                                                                                    #  #####                                                                                   #   #                                                                                      #  #                                                                                    #  #                                                                                      
                                                                                                                                                                                     #     #                                                                                    #      #                                                                                   #   #                                                                                      #  #                                                                                  #  #                                                                                       
                                                                                                                                                                                      #    #                                                                                     #     #                                                                                    #   #####################################################################################  #  #                                                                                #  #                                                                                        
                                                                                                                                                                                       #   #                                                                                      #    #                                                                                     #                                                                                       #  #  #                                                                              #  #                                                                                         
                                                                                                                                                                                        #  #                                                                                       #   #                                                                                      ######################################################################################  #  #  #                                                                            #  #                                                                                          
                                                                                                                                                                                         #  #                                                                                       #  #                                                                                                                                                                            #  #  #  #                                                                          #  #                                                                                           
                                                                                                                                                                                          #  #                                                                                       #  ###########################################################################################################################################################################  #  #  #  #                                                                        #  #                                                                                            
                                                                                                                                                                                           #  #                                                                                       #                                                                                                                                                                            #  #  #  #  #                                                                      #  #                                                                                             
                                                                                                                                                                                            #  #                                                                                       ###########################################################################################################################################################################  #  #  #  #  #                                                                    #  #                                                                                              
                                                                                                                                                                                             #  #                                                                                                                                                                                                                                                                 #  #  #  #  #  #                                                                  #  #                                                                                               
                                                                                                                                                                                              #  ################################################################################################################################################################################################################################################################  #  #  #  #  #  #                                                                #  #                                                                                                
                                                                                                                                                                                               #                                                                                                                                                                                                                                                                 #  #  #  #  #  # #                                                               #  #                                                                                                 
                                                                                                                                                                                                ################################################################################################################################################################################################################################## ########################### #  #  #  #  #  # # #                                                              #  #                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                  #                           # #  #  #  #  # # # #                                                             #  #                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                  #                          #  #   #  #  # # # # #                                                            #  #                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                  #                          # #####    # # # # # #                                                           #  #                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                   ################ # ##     # #  #     # # # # # #                                                          #  #                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                   ###  #   #  #####   #  # # # # #                                                         #  #                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                    # ######    # # # #   # # # # #                                                        #  #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                        #      #     #    # # # # #                                                       #  #                                                                                                         
                                                                                                                                                                                                                                                                                                                                                                                                                                                        #   # #       #   # # # # #                                                      #  #                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                        #  #####     #####  # # # #                                                     #  #                                                                                                           
                                                                                                                                                                                                                                                                                                                                                                                                                                                        #   # #      #  #   # # # #                                                    #  #                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                        #  ## ##     #####  # # #  #                                                  #  #                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                        # # ### #     # # # # #  #  #                                #################  #                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                        # #     ##   #     #   #  # #                               #                  #                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                       #   ## ##  # #       #   # # #                              #  #################                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                                      #      #   #####     #####  # #                             #  #                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                                     #      ###   # #      #  #   # #                            #  #   #######~@####~@######################~@################~@                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                    #        #   ## ##     #####  # #                           #  #   #                                                         #                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                   #  ##     #  # ### #     # # # # #                          #  #    #  #######################################################                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                  #  #  #   @ # #     ##   #     #   #                        #  #     # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                 #  #  ~~~ ~  #  ## ##  # #       #   #                      #  #      #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                #  #    #  # ###   #   #####     #####                      #  #       #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                               #  #    ~ ##   #   ###   # #      #  #                      #  #        #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                              #  #     @ #   # #   #   ## ##     #####                    #  #         # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                             #  #     ###   #  #   #  # ### #     # # # ##################  #          #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                            #  #       #   #  #   @ # #     ##   #     #                   #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                           #  #       #   #  ~~~ ~  #  ## ##  # #       #   ###############            #  ##@~####@~####@~####@~####@~###################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                          #  #       # ###    #  # ###   #   #####     #####                           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                         #  #         #      ~ ##   #   ###   # #      #  #                            #  #~@####~@####~@####~@####~@####~@####~@####~@####~@####~@####~@####~@####~@####~@####~@####~@##                              
                                                                                                                                                                                                                                                                                                                                                                                                                                        #  #           #     @ #   # #   #   ## ##     #####                           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                       #  #             #   ###   #  #   #  # ### #     # #                            #  ##########################################################################@~####@~####@~####@~#                              
                                                                                                                                                                                                                                                                                                                                                                                                                                      #  #               #   #   #  #   @ # #     ##   #                               # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     #   #                # #   #  ~~~ ~  #  ## ##  # #                                #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                      #  #                 # ###    #  # ###   #   #####                               #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                  #      ~ ##   #   ###   # #                                #  ################################@~#############################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                   #     @ #   # #   #   ## ##                               # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                    #   ###   #  #   #  # ### #                              #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                     #   #   #  #   @ # #     ##                             #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                      # #   #  ~~~ ~  #  ## ##  #                            #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                       # ###    #  # ###   #     #                           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                        #      ~ ##   #   ###    #                           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #    #######              #     @ #   # #   #      #                          #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   #       #              #   ###   #  #   #       #                         #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   #  ####  ######         #   #   #  #   @ #       #                        # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #    #       #         # #   #  ~~~ ~  #        #                       #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #   # #       #         # ###    #  # ###        #                      #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #   ###        #         #      ~ ##   #          #                     #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #    #          #         #     @ #                #                    # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #    #           #         #   ###                  #                   #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #    # # ~        #         ##  #                    #                  #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #     ##@#         ~          ##                      #                 #  ######################################@~##########@~###########################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #    # #            @#########                         #                # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #    #                                                  #               #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #   ###~@####~@####~@####~@####~@####                   #               #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  #                                 ~                  #               #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  @  @~####@~####@~####@~####@~####@                  # #              # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  ~ #                                                 ###              #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  #  ###~@####~@######~@##~@####~@####~@####~@####~@   #               #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  #                                                 #   ###            #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  #  @~####@~####@~####@~####@~####@~####@~####@~###       #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  # #                                                   #  #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  @  ###~@####~@##########~@####~@####~@####~@####~@   # # #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  ~                                                 #  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  #  @~####@~####@~####@~####@~####@~####@~####@~###   # # #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  # #                                                  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  #  ###~@####~@##########~@####~@####~@####~@####~@   # # #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #   # #  #                                                 #  # # #           #  ############################################@~######################@~#########################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #    #   @  @~####@~####@~####@~####@~##########@~####@~###   # # #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        ~ #                                                  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        #  ###~@####~@##########~@####~@####~@####~@####~@   # # #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        #                                                 #  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        #  @~####@~####@~####@~####@~##########@~####@~###   # # #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        # #                                                  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        @  ###~@####~@##########~@####~@####~@##########~@   # # #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        ~                                                 #  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        #  @~##########@~####@~####@~##########@~####@~###   # # #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        # #                                                  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        #  ###~@####~@##########~@####~@####~@##########~@   # # #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        #                                                 #  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        @  @~##########@~####@~####@~##########@~####@~###   # # #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        ~ #                                                  # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #        #  ###~@####~@##########~@####~@####~@####~@####~@ # # # #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     #  #         #                                                 ###  # #           #  ##################################################@~##########@~####@~####@~####@~####@~#######                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     #             ##@~####@~####@~####@~####@~####@~####@~####@~### # # # #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                                                 # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                                            #    # # #           #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                                                 # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                                    ###          # # #           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                                   #   ######    # # #           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                                  #  ##      #   #  #            #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                     #           #  #    # ####  #               #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                   #                 #          #    # ####  #  ######           # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     #                                               #      #  # ## ##      #######    #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                     #  ###########################################~@##    ###           ##        # # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # #                                               #    #           #  #        ### #################################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #  #############################################    #  #####   @@@@  #      # #                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                     # # #                                                 # #     #  ~  ~   #     #     #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                     # #  #############################################   ###### #  ##~###    #  ####                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                     # #                                               # #   #  ###   ~ #      ###  #    #                       #                       #                       #                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                     #  ###############################################   ##  ## # #     #    #  ####                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                      #                                                     #       # ~ # # @@@@   #  # ################################################################@~##########@~####@~####@~####@~#                              
                                                                                                                                                                                                                                                                                                                                                                                                                                       ####                                               @@@@  ##   #~#   @~  ~   # # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                           #        #@~####@~####@~####@~####@~####@~####@~  ~ @  ##~ ~   # ~###    #  #  ###########################################################################################~@##                              
                                                                                                                                                                                                                                                                                                                                                                                                                                            #      #                                      ~###  ~#       #    #    ~~~ # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                             #      ##~@####~@##########################    #      ##@~##    #      #  #  ########################################################@~##########@~####@~####@~####@~####@~#                              
                                                                                                                                                                                                                                                                                                                                                                                                                                              #                                         #    ##@~##         #       @~ #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                               #    #####################@~####@~#######                   @           #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                #  #                                         #~@####~@####~@#       ~# # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                 #  ##################~@####~@####~@####~@###              @ #      @  #  ##################################################@~##########@~####@~####@~####@~####@~#######                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                  #                                    #          #          #     ### #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                   #####################                               ## ###       #  #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #                             #  #         # ### #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #                         #  # ###        #   #  ##################################################@~################@~####@~###################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          #                           #  #        @@@  #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #                           # # #       ~ # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            #                          #  #### ##@~# # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #                         # @ #  #  @  #  #  ########################################################@~################@~####@~#############                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              #                        # ~   ### # ### #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               #                       #  #~  #  #  #  #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                #                      # #  @ @  #  #  # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #                     #  ##   ~ #   # #  ##################################################@~################@~####@~###################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #                    #       # ~   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #                   #  #    # @   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #                  # # #   # #   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #                 # ~ #   # #   # #  ############################################@~################@~####@~#########################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      #                # @ @   @ #   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #               # # ~   ~ #   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #              # # #   # ~   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #             # # #   # @   # #  ############################################@~##########@~#####################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          #            # # #   # #   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #           # # #   # #   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            #          # # #   @ #   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #         # # #   ~ #   # #  ##################################################@~##########@~###############################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              #        # # #   # ~   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               #        #  #   # @   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                #          #   # #   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #         #   # #   # #  ############################################@~##########@~#####################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #        #   @ #   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #       #   ~ #   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #      #   # ~   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     # #   #   # @   # #  ######################################@~##########@~###########################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ##@  #   # #   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     # # ~ #   # #   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     @   # #   @ #   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ~~  # #   ~ #   # #  ######################################@~#######################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     # @ # #   # ~   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #  #  #   # @   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #     #   # #   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ###   ###  # #   # #  ############################################@~#################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    # @   @ @  @ #   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ## @~ ~@ @~ ~ #   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  # ##@ # @#@ #  ~   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #     #     #  @   # #  ######################################@~#######################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #    #    #   #   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #  ###  #    #   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     # # @ @     #   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ## @~      #   # #  ################################@~#############################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     # ##@ #     ~   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #      #    @   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      #      #   #   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #      #  #   # #  ################################@~#############################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #      @ #   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #     ~ #   # #  ###############################################################################################                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          #    # ~   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #   #  @  # #  @~##################################################################@~####@~####@~####@~#######                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            #   ##   # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #       # #  #~@####~@####~@####~@####~@####~@####~@####~@####~@####~@####~@##########~@####~@##############                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ####   # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #  # #  ##@~####@~####@~####@~####@~##################################@~######################@~####@~#                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #  #########################################################################~@################~@##                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #  ########################################################@~######################@~####@~####@~#                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #                                                                                                 #                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #  ###############################################################################~@##############                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # # #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #  #######################################################                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # # #                                                         #                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # #  ###################~@####~@####~@####~@####~@##########~@                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # #                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #  ########################                                                                                                         
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #                          #################################################                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ########################                                                   #                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            #  ################################################                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            # #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ##                                #  #################################################                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #  #                               #                                                   #                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #  ##                               #   ################################################                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #  #  #                              #  #                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      #  #  #                               @ #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #  #   #                               ~ #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #  ~    ~                               # #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #  @   ~ @                          ###  # # #   #                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #  ## ##~#                           #  # # # # # #                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #  #  #  ~   ~                        #  # # # # # #                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                #  #  #  @  @#~#                       #  # @ #  # #                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               #  #   # ###~  ~                        ###  ~ #  # #                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              #  ~    ~  #                                  # #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #  @   ~ @@# # ###                             # #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            #  ## ##~#     ## ##                           #####                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #  #  #  ~   ~   # #                             # #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          #  #  #  @  @#~# #####                         #### ##                                 ##                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #  #   # ###~  ~   # #                         #   ### #                                ##                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #  ~    ~  #       #  # #                        #      #                                   ######                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #  @   ~ @@# # ### ###  ###                        #  #######################################      #                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      #  ## ##~#     ## ## #  # #                         # #                                        ####  # #                                                         
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #  #  #  ~   ~   # #   ##  #     #                   #  ##~@####~@##############################    #  ###                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #  #  #  @  @#~# #####            #                   #                                             #### # # #                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #  #   # ###~  ~   # #             #                    ############################################  #      ###                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #  ~    ~  #       #  # #                                                                            ###    ## # #############                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #  @   ~ @@# # ### ###  ############################## @~####@~####@~####@~#########################     #  #     #            #                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                #  ## ##~#     ## ## #  # #                            #                                             # #   ###  # #   #          #                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               #  #  #  ~   ~   # #   ##  #     #                      #       #                                      ###     ###### ###          #                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              #  #  #  @  @#~# #####             #                      ###########################################  # # # #    #  #  #      #     #                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #  #   # ###~  ~   # #             ##                                                                 # #    ###  #####  #  #### ##    #                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            #  ~    ~  #       #  # #                                                                            ####   ## # ## # #  #  #     # #    #                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #  @   ~ @@# # ### ###  #######@~####@~############### @~####@~####@~####@~####@~###################    #   #     #     # # ###   #  #   #                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          #  ## ##~#     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #  #  #  ~   ~   # #   ##  #     ##                     # #                                            ###     ###### ### # #  #  #  #   #                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #  #  #  @  @#~# #####             #                      ##############~@####~@##########~@####~@###  # # # #    #  #  #  #   #  #  #   #                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #  #   # ###~  ~   # #             ##                                                                 # #    ###  #####  #  #### ##  #   #                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      #  ~    ~  #       #  # #                               #                                            ####   ## # ## # #  #  #     #  #   #                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #  @   ~ @@# # ### ###  ###################@~######### ######@~############################@~#######    #   #     #     # # ###   #  #   #                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #  ## ##~#     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                         
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #  #  #  ~   ~   # #   ##  #     #                      #                                              ###     ###### ### # #  #  #  #   #                                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #  #  #  @  @#~# #####            ##                      ########~@#################################  # # # #    #  #  #  #   #  #  #   #                                           
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #  #   # ###~  ~   # #              #                                                                 # #    ###  #####  #  #### ##  #   #                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                #  ~    ~  #       #  # #                                     #                                      ####   ## # ## # #  #  #     #  #   #                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                               #  @   ~ @@# # ### ###  #######@~####@~####@~####@~### ##################@~######################@~#    #   #     #     # # ###   #  #   #                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                              #  ## ##~#     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                             #  #  #  ~   ~   # #   ##  #     ##                     #                                              ###     ###### ### # #  #  #  #   #                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                                            #  #  #  @  @#~# #####            #                       ##~@####~@####~@####~@#####################  # # # #    #  #  #  #   #  #  #   #                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                                           #  #   # ###~  ~   # #              #                                                                 # #    ###  #####  #  #### ##  #   #                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                          #  ~    ~  #       #  # @                                           #                                ####   ## # ## # #  #  #     #  #   #                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                                         #  @   ~ @@# # ### ###  #@~##########@~####@~####@~### @~################@~####@~###################    #   #     #     # # ###   #  #   #                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                        #  ## ##~#     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                       #  #  #  ~   ~   # #   ##  #     #                      #                                              ###     ###### ### # #  #  #  #   #                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                      #  #  #  @  @#~# #####            ##                      ##~@####~@####~@##########~@###############  # # # #    #  #  #  #   #  #  #   #                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                     #  #   # ###~  ~   # #             ##                                                                 # @    ###  #####  #  #### ##  #   #                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                    #  ~    ~  #       #  # #                                                 #                          @~~~   ## # ## # #  #  #     #  #   #                                                         
                                                                                                                                                                                                                                                                                                                                                                                                                                                   #  @   ~ @@# # ### ###  ###################@~####@~### @~####@~################@~##########@~####@~#    #   #     #     # # ###   #  #   #                                                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                  #  ## ##~#     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                           
                                                                                                                                                                                                                                                                                                                                                                                                                                                 #  #  #  ~   ~   # #   ##  #     ##                     #                                              ###     ###### ### # #  #  #  #   #                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                #  #  #  @  @#~# #####             #                      ##~@####~@############################~@###  # # # #    #  #  #  #   #  #  #   #                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                               #  #   # ###~  ~   # #              #                                                                 # @    ###  #####  #  #### ##  #   #                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                              #  ~    ~  #       #  # #                                                       #                    @~~~   ## # ## # #  #  #     #  #   #                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                             #  @   ~ @@# # ### ###  #############@~##########@~### @~####@~####@~###############################    #   #     #     # # ###   #  #   #                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                            #  ## ##~#     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                           #  #  #  ~   ~   # #   ##  #     ##          #          #                                              ###     ###### ### # #  #  #  #   #                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                          #  #  #  @  @#~# #####            ##                      ##~@##########~@################~@#########  # # # #    #  #  #  #   #  #  #   #                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                         #  #   # ###~  ~   # #             ##                                                                 # #    ###  #####  #  #### ##  #   #                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                        #  ~    ~  #       #  # @                                                             #              ####   ## # ## # #  #  #     #  #   #                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                       #  @   ~ @@# # ### ###  #@~################@~######### ######@~####@~####@~#########################    #   #     #     # # ###   #  #   #                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                      #  ## ##~#     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                     #  #  #  ~   ~   # #   ##  #     ##                     #                                              ###     ###### ### # #  #  #  #   #                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                    #  #  #  @  @#~# #####            ##                      ########~@################~@###############  # # # #    #  #  #  #   #  #  #   #                                                                         
                                                                                                                                                                                                                                                                                                                                                                                                                                   #  #   # ###~  ~   # #              #                                                                 # @    ###  #####  #  #### ##  #   #                                                                          
                                                                                                                                                                                                                                                                                                                                                                                                                                  #  ~    ~  #       #  # #                                                                   #        @~~~   ## # ## # #  #  #     #  #   #                                                                           
                                                                                                                                                                                                                                                                                                                                                                                                                                 #  @   ~ @@# # ### ###  #######@~################@~### @~####@~##########@~####@~################@~#    #   #     #     # # ###   #  #   #                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                #  ## ##~#     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                               #  #  #  ~   ~   # #   ##  #     #                      #                                              ###     ###### ### # #  #  #  #   #                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                              #  #  #  @  @#~# #####            # ##                    ##~@################~@################~@###  # # # #    #  #  #  #   #  #  #   #                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                             #  #   # ###~  ~   # #             # ##                                                               # #    ###  #####  #  #### ##  #   #                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                            #  ~    ~  #       #  # @                                                                         #  ####   ## # ## # #  #  #     #  #   #                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                           #  ~   # @@# # ### ###  #@~####@~####@~############### ##################@~####@~####@~#############    #   #     #     # # ###   #  #   #                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                          #  #~ ####     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                         #  #  @  #   ~   # #   ##  #     # #                    #                                              ###     ###### ### # #  #  #  #   #                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                        #  #  #  #  @#~# #####            # #                     ##############~@####~@####~@####~@#########  # # # #    #  #  #  #   #  #  #   #                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                       #  #   # ###~  ~   # #             # #                                                                # @    ###  #####  #  #### ##  #   #                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      #  @    #  @       #  # #                                                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                     #  ~   @ ##~ # ##~ ###  #######@~####@~####@~######### ######@~####@~####@~####@~####@~####@~#######    #   #     #     # # ###   #  #   #                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                    #  #~ ##@~     ## ~# #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                         
                                                                                                                                                                                                                                                                                                                                                                                                                   #  #  @  @   @   # ~   ##  #     # #                    #                                              ###     ###### ### # #  #  #  #   #                                                                                          
                                                                                                                                                                                                                                                                                                                                                                                                                  #  #  #  #  #~@# ###~#            #  #                    ########~@####~@####~@#####################  # # # #    #  #  #  #   #  #  #   #                                                                                           
                                                                                                                                                                                                                                                                                                                                                                                                                 #  #   # ~~~@  @   # ~             # ##                                                               # #    ###  #####  #  #### ##  #   #                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                #  @    #  #       #  @ #                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                               #  ~   @ ##~ # ### ###  #######@~####@~####@~####@~### ############@~##########@~####@~####@~####@~#    #   #     #     # # ###   #  #   #                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                              #  #~ ##@~     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                             #  #  @  @   @   # #   ##  #     # ##                   #                                     #        ###     ###### ### # #  #  #  #   #                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                            #  #  #  #  #~@# #####            #  #                    ##~@####~@####~@####~@##########~@#########  # # # #    #  #  #  #   #  #  #   #                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                           #  #   # ~~~@  @   # #             # ##                                                               # #    ###  #####  #  #### ##  #   #                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                          #  @    #  #       #  # @                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                         #  ~   @ ##~ # ### ###  #@~##########@~####@~####@~### @~################@~##########@~####@~####@~#    #   #     #     # # ###   #  #   #                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                        #  #~ ##@~     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                       #  #  @  @   @   # #   ##  #     # #                    #                               #              ###     ###### ### # #  #  #  #   #                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                      #  #  #  #  #~@# #####            # ##                    ##~@####~@####~@##########~@###############  # # # #    #  #  #  #   #  #  #   #                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                     #  #   # ~~~@  @   # #             #  #                                                               # @    ###  #####  #  #### ##  #   #                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                    #  @    #  #       #  # #                                                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                                         
                                                                                                                                                                                                                                                                                                                                                                                                   #  ~   @ ##~ # ### ###  #######@~##########@~####@~### @~####@~################@~##########@~#######    #   #     #     # # ###   #  #   #                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                                                  #  #~ ##@~     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                           
                                                                                                                                                                                                                                                                                                                                                                                                 #  #  @  @   @   # #   ##  #     # ##                   #                         #                    ###     ###### ### # #  #  #  #   #                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                #  #  #  #  #~@# #####            # #                     ##~@####~@##########~@################~@###  # # # #    #  #  #  #   #  #  #   #                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                               #  #   # ~~~@  @   # #             #  #                                                               # @    ###  #####  #  #### ##  #   #                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                              #  @    #  #       #  # #                                                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                             #  ~   @ ##~ # ### ###  ###################@~####@~### ############@~################@~#############    #   #     #     # # ###   #  #   #                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                            #  #~ ##@~     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                           #  #  @  @   @   # #   ##  #     # #         #          #                   #                          ###     ###### ### # #  #  #  #   #                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                          #  #  #  #  #~@# #####            # ##                    ##~@####~@######################~@####~@###  # # # #    #  #  #  #   #  #  #   #                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                         #  #   # ~~~@  @   # #             # ##                                                               # @    ###  #####  #  #### ##  #   #                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                        #  @    #  #       #  # @                                                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                       #  ~   @ ##~ # ### ###  #@~################@~####@~### @~################@~################@~####@~#    #   #     #     # # ###   #  #   #                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                      #  #~ ##@~     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                     #  #  @  @   @   # #   ##  #     # ##                   #             #                                ###     ###### ### # #  #  #  #   #                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                    #  #  #  #  #~@# #####            #  #                    ##~@####~@################~@####~@#########  # # # #    #  #  #  #   #  #  #   #                                                                                                                         
                                                                                                                                                                                                                                                                                                                                                                                   #  #   # ~~~@  @   # #             #  #                                                               # @    ###  #####  #  #### ##  #   #                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                                  #  @    #  #       #  # @                                                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                                                           
                                                                                                                                                                                                                                                                                                                                                                                 #  ~   @ ##~ # ### ###  #@~####@~##################### @~####@~##########@~####@~###################    #   #     #     # # ###   #  #   #                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                #  #~ ##@~     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                               #  #  @  @   @   # #   ##  #     # ##                   #       #                                      ###     ###### ### # #  #  #  #   #                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                              #  #  #  #  #~@# #####            # ##                    ####################~@####~@####~@#########  # # # #    #  #  #  #   #  #  #   #                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                             #  #   # ~~~@  @   # #             # ##                                                               # #    ###  #####  #  #### ##  #   #                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                            #  @    #  #       #  # @                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                           #  ~   @ ##~ # ### ###  #@~####@~####@~############### ##################@~####@~####@~#############    #   #     #     # # ###   #  #   #                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                          #  #~ ##@~     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                         #  #  @  @   @   # #   ##  #     # ##                   # #                                            ###     ###### ### # #  #  #  #   #                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                        #  #  #  #  #~@# #####            # ##                    ##############~@####~@####~@####~@####~@###  # # # #    #  #  #  #   #  #  #   #                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                       #  #   # ~~~@  @   # #             #  #                                                               # @    ###  #####  #  #### ##  #   #                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                      #  @    #  #       #  # #                               #                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                     #  ~   @ ##~ # ### ###  #######@~####@~####@~######### ########################@~##########@~#######    #   #     #     # # ###   #  #   #                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                    #  #~ ##@~     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                         
                                                                                                                                                                                                                                                                                                                                                                   #  #  @  @   @   # #   ##  #     #                      #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                  #  #  #  #  #~@# #####             # ##                   ########~@####~@####~@################~@###  # # # #    #  #  #  #   #  #  @   #                                                                                                                                           
                                                                                                                                                                                                                                                                                                                                                                 #  #   # ~~~@  @   # #             ## ##                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                #  @    #  #       #  # #                                     #                                      ####   ## # ## # #  #  #     #  #   #                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                               #  ~   @ ##~ # ### ###  ############################## ##########################################@~#    #   #     #     # # ###   #  #   #                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                              #  #~ ##@~     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                             #  #  @  @   @   # #   ##  #     #  #                   #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                            #  #  #  #  #~@# #####             # #                    ###########################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                           #  #   # ~~~@  @   # #             ## #                                                               # #    ###  #####  #  #### ##  ~   #                                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                          #  @    #  #       #  # @                                           #                                ####   ## # ## # #  #  #     #  #   #                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                         #  ~   @ ##~ # ### ###  #@~##########@~####@~####@~### @~###########################################    #   #     #     # # ###   #  #   #                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                        #  #~ ##@~     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                       #  #  @  @   @   # #   ##  #     #  #                   #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                      #  #  #  #  #~@# #####             #  #                   ##~@####~@####~@##########~@###############  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                     #  #   # ~~~@  @   # #             ## ##                                                              # @    ###  #####  #  #### ##  ~   #                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                    #  @    #  #       #  # #                                                 #                          @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                                                   #  ~   @ ##~ # ### ###  ###################@~####@~### @~####@~######################@~####@~####@~#    #   #     #     # # ###   #  #   @                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                  #  #~ ##@~     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                           
                                                                                                                                                                                                                                                                                                                                                 #  #  @  @   @   # #   ##  #     #  ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                #  #  #  #  #~@# #####             #  #                   ##~@####~@#################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                               #  #   # ~~~@  @   # #             ## ##                                                              # @    ###  #####  #  #### ##  ~   #                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                              #  #    #  #       #  # #                                                       #                    @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                             #  #   @ ##~ # ### ###  ############################## @~####@~####@~################@~#############    #   #     #     # # ###   #  #   @                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                            #  ## ##@~     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                           #  #  #  @   @   # #   ##  #     #  #        #          #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                          #  #  #  #  #~@# #####             # ##                   ##~@####~@####~@################~@#########  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                         #  #   # ~~~@  @   # #             ##  #                                                              # @    ###  #####  #  #### ##  ~   #                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                        #  #    #  #       #  # @                                                             #              @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                       #  #   @ ##~ # ### ###  #@~################@~####@~### ##################@~################@~#######    #   #     #     # # ###   #  #   @                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                      #  ## ##@~     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                     #  #  #  @   @   # #   ##  #     #  ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                    #  #  #  #  #~@# #####             # #                    ##########################~@####~@####~@###  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                                   #  #   # ####  @   # #             ##  #                                                              # @    ###  #####  #  #### ##  ~   #                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                  #  #    #  #       #  # #                                                                   #        @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                                           
                                                                                                                                                                                                                                                                                                                                 #  #   # ### # ### ###  #######@~##################### #############################################    #   #     #     # # ###   #  #   @                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                               #  #  #  #   @   # #   ##  #     #  #                   #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                              #  #  #  #  #~@# #####             # ##                   ###########################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                             #  #   # ####  @   # #             ## ##                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                            #  #    #  #       #  # #                                                                         #  ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                           #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   @                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                                                          #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                         #  #  #  #   #   # #   ##  #     #  ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                        #  #  #  #  #### #####             #  #                   ###########################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                       #  #   # ####  #   # #             ##  #                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                      #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                     #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   @                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                    #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                   #  #  #  #   #   # #   ##  #     #  ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                  #  #  #  #  #### #####             # ##                   ###########################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                                                 #  #   # ####  #   # #             ## ##                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                               #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   @                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                              #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                             #  #  #  #   #   # #   ##  #     #  ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                            #  #  #  #  #### #####             # ##                   ###########################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                           #  #   # ####  #   # #             ##  #                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                                          #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                         #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   @                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                        #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                       #  #  #  #   #   # #   ##  #     ##                     #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                      #  #  #  #  #### #####             # ##                   ###########################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                     #  #   # ####  #   # #             ## ##                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                    #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                   #  #   # ### # ### ###  #############@~############### #############################################    #   #     #     # # ###   #  #   @                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                  #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                                 #  #  #  #   #   # #   ##  #     ## #                   #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                #  #  #  #  #### #####             # #                    ##############~@###########################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                               #  #   # ####  #   # #             ## #                                                               # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                              #  #    #  #       #  # @                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                             #  #   # ### # ### ###  #@~##########@~####@~####@~### @~####@~####@~####@~####@~####@~####@~####@~#    #   #     #     # # ###   #  #   @                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                            #  ## ####     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                           #  #  #  #   #   # #   ##  #     ## #        #          #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                          #  #  #  #  #### #####             #  #                   ##~@####~@####~@##########~@####~@####~@###  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                         #  #   # ####  #   # #             ## ##                                                              # @    ###  #####  #  #### ##  ~   #                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                        #  #    #  #       #  # #                                                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                       #  #   # ### # ### ###  ###################@~######### @~###########################################    #   #     #     # # ###   #  #   @                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                      #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                     #  #  #  #   #   # #   ##  #     ## ##                  #             #                                ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                    #  #  #  #  #### #####             #  #                   ########~@#################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                   #  #   # ####  #   # #             ## ##                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                  #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                 #  #   # ### # ### ###  #########################@~### @~###########################################    #   #     #     # # ###   #  #   @                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                               #  #  #  #   #   # #   ##  #     ## #                   #       #                                      ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                              #  #  #  #  #### #####             # ##                   ##~@#######################################  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                             #  #   # ####  #   # #             ##  #                                                              # #    ###  #####  #  #### ##  ~   #                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                            #  #    #  #       #  # @                                                                            ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                           #  #   # ### # ### ###  #@~####@~####@~####@~####@~### ######@~####@~####@~####@~####@~####@~####@~#    #   #     #     # # ###   #  #   @                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                          #  ## ####     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                         #  #  #  #   #   # #   ##  #     ## ##                  # #                                            ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                        #  #  #  #  #### #####             #  #                   ##~@####~@####~@####~@####~@####~@####~@###  # # # #    #  #  #  #   #  #  @   #                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                       #  #   # ####  #   # #             ## #                                                               # @    ###  #####  #  #### ##  ~   #                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                      #  #    #  #       #  # @                               #                                            @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                     #  #   # ### # ### ###  #@~####@~####@~####@~####@~### @~####@~##########@~####@~####@~####@~####@~#    #   #     #     # # ###   #  #   @                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                    #  ## ####     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   ~                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                   #  #  #  #   #   # #   ##  #     ## #                   #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                  #  #  #  #  #### #####             # ##                   ##~@####~@####~@####~@####~@####~@####~@###  # # # #    #  #  #  #   #  #  #   #                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                 #  #   # ####  #   # #             ## ##                                                              # @    ###  #####  #  #### ##  #   #                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                #  #    #  #       #  # #                                     #                                      @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                               #  #   # ### # ### ###  ############################## ########################@~##########@~#######    #   #     #     # # ###   #  #   #                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                              #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                             #  #  #  #   #   # #   ##  #     ## ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                            #  #  #  #  #### #####             #  #                   ###########################################  # # # #    #  #  #  #   #  #  #   #                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                           #  #   # ####  #   # #             ##  #                                                              # #    ###  #####  #  #### ##  #   #                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                          #  #    #  #       #  # #                                           #                                ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                         #  #   # ### # ### ###  ############################## ##################@~##########@~####@~#######    #   #     #     # # ###   #  #   #                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                        #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                       #  #  #  #   #   # #   ##  #     ## ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                      #  #  #  #  #### #####             # ##                   ###########################################  # # # #    #  #  #  #   #  #  #   #                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                     #  #   # ####  #   # #             ## ##                                                              # #    ###  #####  #  #### ##  #   #                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                    #  #    #  #       #  # #                                                 #                          ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                   #  #   # ### # ### ###  ############################## ########################@~################@~#    #   #     #     # # ###   #  #   #                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                  #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                 #  #  #  #   #   # #   ##  #     ## ##                  #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                #  #  #  #  #### #####             # ##                   ###########################################  # # # #    #  #  #  #   #  #  #   #                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                               #  #   # ####  #   # #             ##  #                                                              # #    ###  #####  #  #### ##  #   #                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                              #  #    #  #       #  # #                                                       #                    ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                             #  #   # ### # ### ###  ############################## ##############################@~##########@~#    #   #     #     # # ###   #  #   #                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                            #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                           #  #  #  #   #   # #   ##  #     #           #          #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                          #  #  #  #  #### #####            ## ##                   ###########################################  # # # #    #  #  #  #   #  #  #   #                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                         #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #   #                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                        #  #    #  #       #  # #                                                             #              ####   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                       #  #   # ### # ### ###  ############################## ####################################@~#######    #   #     #     # # ###   #  #   #                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                      #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                     #  #  #  #   #   # #   ##  #     #  #                   #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                    #  #  #  #  #### #####            ## #                    ################################~@#########  # # # #    #  #  #  #   #  #  #   #                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                   #  #   # ####  #   # #              # #                                                               # @    ###  #####  #  #### ##  #   #                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                  #  #    #  #       #  # #                                                                   #        @~~~   ## # ## # #  #  #     #  #   #                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                 #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                               #  #  #  #   #   # #   ##  #     #  #                   #                                              ###     ###### ### # #  #  #  #   #                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                              #  #  #  #  #### #####            ##  #                   ######################################~@###  # # # #    #  #  #  #   #  #  #   #                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                             #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #   #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                            #  #    #  #       #  # @                                                                         ~  ####   ## # ## # #  #  #     #  #   ##                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                           #  #   # ### # ### ###  #@~####@~####@~####@~####@~### @~####@~####@~####@~####@~####@~####@~####@~#    #   #     #     # # ###   #  #   # #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                          #  ## ####     ## ## #  # @                            #                                             # #  ####  # #   #   ### #   #  #   #  #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                         #  #  #  #   #   # #   ##  #     #  ##                  #                                              ###     ###### ### # #  #  #  #   #   #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                        #  #  #  #  #### #####            ##  #                   ##~@####~@####~@####~@####~@####~@#########  # # # #    #  #  #  #   #  #  #   #    #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                       #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #   #     #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                      #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #      #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                     #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #       #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                    #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #        #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                   #  #  #  #   #   # #   ##  #     #  #                   #                                              ###     ###### ### # #  #  #  #   #         #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                  #  #  #  #  #### #####            ## ##                   ###########################################  # # # #    #  #  #  #   #  #  #   #          #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                 #  #   # ####  #   # #              #  #                                                              # #    ###  #####  #  #### ##  #   #           #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #            #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                               #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #             #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                              #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                             #  #  #  #   #   # #   ##  #     #  ##                  #                                     #        ###     ###### ### # #  #  #  #   #               #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                            #  #  #  #  #### #####            ##  #                   ###########################################  # # # #    #  #  #  #   #  #  #   #                #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                           #  #   # ####  #   # #              # #                                                               # #    ###  #####  #  #### ##  #   #                 #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                          #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                  #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                         #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #                   #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                        #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                    #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                       #  #  #  #   #   # #   ##  #     #  #                   #                               #              ###     ###### ### # #  #  #  #   #                     #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                      #  #  #  #  #### #####            ## ##                   ###########################################  # # # #    #  #  #  #   #  #  #   #                      #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                     #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #   #                       #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                    #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                        #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                   #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #                         #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                  #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                          #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                 #  #  #  #   #   # #   ##  #     #  ##                  #                         #                    ###     ###### ### # #  #  #  #   #                           #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                #  #  #  #  #### #####            ##  #                   ###########################################  # # # #    #  #  #  #   #  #  #   #                            #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                               #  #   # ####  #   # #              #  #                                                              # #    ###  #####  #  #### ##  #   #                             #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                              #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                             #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #                               #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                            #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                           #  #  #  #   #   # #   ##  #     #  ##       #          #                   #                          ###     ###### ### # #  #  #  #   #                                 #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                          #  #  #  #  #### #####            ## ##                   ###########################################  # # # #    #  #  #  #   #  #  #   #                                  #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                         #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #   #                                   #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                        #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                                    #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                       #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #                                     #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                      #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                      #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                     #  #  #  #   #   # #   ##  #     #  ##                  #             #                                ###     ###### ### # #  #  #  #   #                                       #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                    #  #  #  #  #### #####            ## ##                   ###########################################  # # # #    #  #  #  #   #  #  #   ~                                        #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                   #  #   # ####  #   # #              #  #                                                              # #    ###  #####  #  #### ##  #   @                                         #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                  #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #   #                                          #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                 #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #   #                                           #                                                                                                                                                                                                                                                                                
                                                                                                                                                                                #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #   #                                            #                                                                                                                                                                                                                                                                                
                                                                                                                                                                               #  #  #  #   #   # #   ##  #     ##                     #       #                                      ###     ###### ### # #  #  #  #   #                                             #                                                                                                                                                                                                                                                                                
                                                                                                                                                                              #  #  #  #  #### #####            #  ##                   ###########################################  # # # #    #  #  #  #   #  #  #   ~                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                             #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #    @                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                            #  #    #  #       #  # #                                                                            ####   ## # ## # #  #  #     #  #     #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                           #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #      #                                              #          #                                                                                                                                                                                                                                                                     
                                                                                                                                                                          #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #       #                                              #         #    ###@~##########################################                                                                                                                                                                                                                   
                                                                                                                                                                         #  #  #  #   #   # #   ##  #     ## #                   # #                                            ###     ###### ### # #  #  #  #        #                                              #   ##   ######                                               #                                                                                                                                                                                                                  
                                                                                                                                                                        #  #  #  #  #### #####            #  #                    ###########################################  # # # #    #  #  #  #   #  #  #         ~                                              #   ##    #    ###############################################                                                                                                                                                                                                                   
                                                                                                                                                                       #  #   # ####  #   # #              # #                                                               # #    ###  #####  #  #### ##  #          @                                              #          #                                                                                                                                                                                                                                                                     
                                                                                                                                                                      #  #    #  #       #  # #                               #                                            ####   ## # ## # #  #  #     #  #           #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                     #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #            #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                    #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #             #                                              #   #                                                                                                                                                                                                                                                                            
                                                                                                                                                                   #  #  #  #   #   # #   ##  #     ## #                   #                                              ###     ###### ### # #  #  #  #                                                             #   #                                                                                                                                                                                                                                                                            
                                                                                                                                                                  #  #  #  #  #### #####            #   #                   ###########################################  # # # #    #  #  #  #   #  #  #  #############                                               #   #                                                                                                                                                                                                                                                                            
                                                                                                                                                                 #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #   #            #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                                #  #    #  #       #  # #                                     #                                      ####   ## # ## # #  #  #     #  #    #     #   #  #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                               #  #   # ### # ### ###  ############################## #############################################    #   #     #     # # ###   #  #     #    # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                              #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #      #    # # # # #                                              #   #                                                                                                                                                                                                                                                                            
                                                                                                                                                             #  #  #  #   #   # #   ##  #     ## ##                  #                                              ###     ###### ### # #  #  #  #       #    # # # # #                                              #    #                                                                                                                                                                                                                                                                           
                                                                                                                                                            #  #  #  #  #### #####            #   #                   ###########################################  # # # #    #  #  #  #   #  #  #       #     # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                                                           #  #   # ####  #   # #              # ##                                                              # #    ###  #####  #  #### ##  #        #     # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                          #  #    #  #       #  # @                                                                            ####   ## # ## # #  #  #     #  #         #     # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                         #  #   # ### # ### ###  #@~####@~####@~###     ####### #############################################    #   #     #     # # ###   #  #          #     # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                        #  ## ####     ## ## #  # @                # # #       #                                             # #  ####  # #   #   ### #   #  #           #     # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                                                       #  #  #  #   #   # #   ##  #     ## #        @@@@@      #                                              ###     ###### ### # #  #  #  #            #     # # # # #                                              #    #                                                                                                                                                                                                                                                                           
                                                                                                                                                      #  #  #  #  #### #####            #  ##        ~  ~       ###########################################  # # # #    #  #  #  #   #  #  #             #     # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                                                     #  #   # ####  #   # #              #  #       #~###                                                  # #    ###  #####  #  #### ##  #              #     # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                    #  #    #  #       #  # #                      # ~ #                                                 ####   ## # ## # #  #  #     #  #               #     # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                   #  #   # ### # ### ###  ########################     # @~####@~####@~##########@~####@~####@~####@~#    #   #     #     # # ###   #  #                #     # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                                  #  ## ####     ## ## #  # #                            #                                             # #  ####  # #   #   ### #   #  #                 #     # # # # #                                              #   #                                                                                                                                                                                                                                                                            
                                                                                                                                                 #  #  #  #   #   # #   ##        ## ##                  #                                              ###     ###### ### # #  #  #  #                  #     # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                                                #  #  #  #  #### #####     ## ##  #  #                    ##~@####~@####~@####~@####~@####~@####~@###  # # # #    #  #  #  #   #  #  #                   #  #  # # # # #                                              #    #                                                                                                                                                                                                                                                                           
                                                                                                                                               #  #   # ####  #   # #    ##  #  #  #  #                                                              # @    ###  #####  #  #### ##  #                    # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                              #  #    #  #       #  #   #   ###  #                                                                 @~~~   ## # ## # #  #  #     #  #                     # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                             #  #   # ### # ### ###    #     #    ################# ##############################@~##########@~#    #   #     #     # # ###   #  #                      # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                            #  ## ####     ## ## #    #  ~@##                      #                                             # #  ####  # #   #   ### #   #  #                       # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                                           #  #  #  #   #   # #   #  #  #     #                     ###########################################   ###     ###### ### # #  #  #  #                        # # # # # # # #                                              #   #                                                                                                                                                                                                                                                                            
                                                                                                                                          #  #  #  #  #### #####    #  #  #  # #####                                                           # # # # #    #  #  #  #   #  #  #                         # # # # # # # #                                              #    #                                                                                                                                                                                                                                                                           
                                                                                                                                         #  #   # ####  #   # #    #   # # # #      #         ###########################################      # @    ###  #####  #  #### ##  #                          # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                        #  #    #  #       #  # # #   #  # # # #     #########                                           #   @~~~   ## # ## # #  #  #     #  #                           # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                       #  #   # ### # ### ###  ##### @  #  #  #### #          #########################################   #    #   #     #     # # ###   #  #                            # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                      #  ## ####     ## ## #  # # #  ~ @@@ #   #  ###                                                  #   # #  ####  # #   #   ### #   #  #                             # # # # # # # #                                              #   #                                                                                                                                                                                                                                                                            
                                                                                                                                     #  #  #  #   #   # #   ##    # #   ~  # ## ## # # ###############################################  #   ###     ###### ### # #  #  #  #                              # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                                    #  #  #  #  #### #####      ##  #  @ #  #         #                                               #  # # # # #    #  #  #  #   #  #  #                               # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                                   #  #   # ####  #   # #      #     ### #    #######  #########################@~####################   # #    ###  #####  #  #### ##  #                                # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                  #  #    #  #       #  # #   #      #  ######       ##                                                ####   ## # ## # #  #  #     #  #                                 # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                 #  #   # ### # ### ###   ##   # #  ###  #     @~       #############################################    #   #     #     # # ###   #  #                                  # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                                #  ## ####     ## ## #  # #     ###  #        #  #  #  #                                             # #  ####  # #   #   ### #   #  #                                   # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                               #  #  #  #   #   # #   ##  #    # # ## ###@~### ##  # #  ###########################~@##########~ ##   ###     ###### ### # #  #  #  #                                    # # # # # # # #                                              #    #                                                                                                                                                                                                                                                                           
                                                                                                                              #  #  #  #  #### #####          #                    #  #                                         @  # # # # #    #  #  #  #   #  #  #                                     # # # # # # # #                                              #    #                                                                                                                                                                                                                                                                           
                                                                                                                             #  #   # ####  #   # #            ####################    #########################################   # #    ###  #####  #  #### ##  #                                      # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                            #  #    #  #       #  # #                                                                             ###   ## # ## # #  #  #     #  #                                       # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                           #  #   # ### # ### ###  ############################   #############################################    #   #     #     # # ###   #  #                                        # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                          #  ## ####     ## ## #  # #                          # #                                             # #  ####  # #   #   ### #   #  #                                         # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                         #  #  #  #   #   # #   ##  #               ## ##      #  #######################################~@##   ###     ###### ### # #  #  #  #                                          # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                        #  #  #  #  #### #####                      #  ##       #                                            # # # # #    #  #  #  #   #  #  #                                           # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                       #  #   # ####  #   # #                        #  #        ########################################### # #    ###  #####  #  #### ##  #                                            # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                      #  #    #  #       #  # #                                                                             ###   ## # ## # #  #  #     #  #                                             # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                     #  #   # ### # ### ###  ############################   #############################################    #   #     #     # # ###   #  #                                              # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                    #  ## ####     ## ## #  # #                          # #                                             # #  ####  # #   #   ### #   #  #                                               # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                   #  #  #  #   #   # #   ##  #         ######           # #                                              ###     ###### ### # #  #  #  #                                                # # # # # # # #                                              #   ##                                                                                                                                                                                                                                                                           
                                                                                                                  #  #  #  #  #### #####               #      #         #   ###########################################  # # # #    #  #  #  #   #  #  #                                                 # # # # # # # #                                              #    #                                                                                                                                                                                                                                                                           
                                                                                                                 #  #   # ####  #   # #       #########   ##   #         ###                                           # #    ###  #####  #  #### ##  #                                                  # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                                #  #    #  #       #  # @  ###           #  #   ###                                                  ####   ## # ## # #  #  #     #  #                                                   # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                               #  #   # ### # ### ###  #@~#    #####   ####  #     ## #############################################    #   #     #     # # ###   #  #                                                    # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                              #  ## ####     ## ## #  # @     #     #  #  #   #   #  #                                             # #  ####  # #   #   ### #   #  #                                                     # # # # # # # #                                              #   #                                                                                                                                                                                                                                                                            
                                                                                                             #  #  #  #   #   # #   ##  #  ###### #  ######    # #   #                                              ###     ###### ### # #  #  #  #                                                      # # # # # # # #                                              #   # ##                                                                                                                                                                                                                                                                         
                                                                                                            #  #  #  #  #### #####        #   #  ###   # #      #     ##########################~@###############  # # # #    #  #  #  #   #  #  #                                                       # # # # # # # #                                              #   # ##                                                                                                                                                                                                                                                                         
                                                                                                           #  #   # ####  #   # #          ~@  ## # @     #   ####                                               # #    ###  #####  #  #### ##  #                                                        # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                          #  #    #  #       #  # @          #       ~ ~ # # ##  #                                             ####   ## # ## # #  #  #     #  #                                                         # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                         #  #   # ### # ### ###  #@~###### ####  ~@   #~#   # ####  #########################################    #   #     #     # # ###   #  #                                                          # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                        #  ## ####     ## ## #  # @       ##  # #  ### ~   #    #  #                                         # #  ####  # #   #   ### #   #  #                                                           # # # # # # # #                                              #   # #                                                                                                                                                                                                                                                                          
                                                                                                       #  #  #  #   #   # #   ##  #        ####  ##       #    # ##                                           ###     ###### ### # #  #  #  #                                                            # # # # # # # #                                              #   # #                                                                                                                                                                                                                                                                          
                                                                                                      #  #  #  #  #### #####                 #      ######     #    ################~@####~@###############  # # # #    #  #  #  #   #  #  #                                                             # # # # # # # #                                              #   # #                                                                                                                                                                                                                                                                          
                                                                                                     #  #   # ####  #   # #                   ######            ####                                       # #    ###  #####  #  #### ##  #                                                              # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                    #  #    #  #       #  # @       ## #                                                                 ####   ## # ## # #  #  #     #  #                                                               # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                   #  #     ### # ### ###  #@~####@~  ################### #############################################    #   #     #     # # ###   #  #                                                                # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                                  #  #           ## ## #  # @        # #                 #                                             # #  ####  # #   #   ### #   #  #                                                                 # # # # # # # #                                              #   # #                                                                                                                                                                                                                                                                          
                                                                                                 #  #             # #   ##  #      #@              @#    #                                              ###     ###### ### # #  #  #  #                                                                  # # # # # # # #                                              #   #  #                                                                                                                                                                                                                                                                         
                                                                                                #  #             #####            #  ~         ##@~  #    ###########################################  # # # #    #  #  #  #   #  #  #                                                                   # # # # # # # #                                              #   # ##                                                                                                                                                                                                                                                                         
                                                                                               #  #               # #              ##         #    ### #                                             # #    ###  #####  #  #### ##  #                                                                    # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                              #  #               #  # #                       # @     #### ##                                      ####   ## # ## # #  #  #     #  #                                                                     # # # # # @ # #                                              #                                                                                                                                                                                                                                                                                
                                                                                             #  #               ###  #############@~#########  ~@## ## #  #  ####################################    #   #     #     # # ###   #   #                                                                     # # # # # ~ # #                                              #                                                                                                                                                                                                                                                                                
                                                                                            #  #               # #  # #           @          #@ @  #      #                                      # #  ####  # #   #   ### #   #    #                                                                     # # # # # # # #                                              #   # ##                                                                                                                                                                                                                                                                         
                                                                                           #  #               #   ##  #           #     #         ###      ##          #                          ###     ###### ### # #  #  #     #                                                                     # # # # # # # #                                              #   #  #                                                                                                                                                                                                                                                                         
                                                                                          #  #               #                     ##              #  ~##    #   #~@###########################  # # # #    #  #  #  #   #  #      #                                                                     # # # # # # # #                                              #   # ##                                                                                                                                                                                                                                                                         
                                                                                         #  #               #                        #            # ##~ ###@~   #                              # #    ###  #####  #  #### ##       #                                                                     # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                        #  #               # #               ####### #            # # ~ #       #                            ####   ## # ## # #  #  #     #  #     #                                                                     # # # # # @ # #                                              #                                                                                                                                                                                                                                                                                
                                                                                       #  #               #  #            # #       #            ###  ~##  #####                               #   #     #     # # ###   #  # #    #                                                                     # # # # # ~ # #                                              #                                                                                                                                                                                                                                                                                
                                                                                      #  #               #   # # #############    ####            #    ~  #                                     ####  # #   #   ### #   #   # #    #                                                                     # # # # # # # #                                              #   # #                                                                                                                                                                                                                                                                          
                                                                                     #  #               #     ###         #  #   ##  #    #      #      @#                                          ###### ### # #  #  #    # #    #                                                                     # # # # # # # #                                              #   # ##                                                                                                                                                                                                                                                                         
                                                                                    #  #               #       #    #    #####  # ####   # #     #                                                    #  #  #  #   #  #     # #    #                                                                     # # # # # # # #                                              #   #  #                                                                                                                                                                                                                                                                         
                                                                                   #  #               #        #   # #  # # #  #    #    #  ##### #                                                  #####  #  #### ##      #  ##  #                                                                     # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                                                                  #  #               #         # # # # #     ##      #   #        #                                                 # # #  #  #     #      # #   # #                                                                     # # # # # @ # #                                              #                                                                                                                                                                                                                                                                                
                                                                                 #  #               #           ###  # #              #  #        #                                                #     # # ###   #       ###   # #                                                                     # # # # # ~ # #                                              #                                                                                                                                                                                                                                                                                
                                                                                #  #               #           # #    #                # #       #                                                        ### #   #  #      #    # #                                                                     # # # # # # # #                                              #   # ##                                                                                                                                                                                                                                                                         
                                                                          ##   #  #               #            #            ############ #      #                                                        # #  #  #  # #     #    # #                                                                     # # # # # # # #                                              #   # #                                                                                                                                                                                                                                                                          
                                   ############################# ########## ###  #               #       #     #  ##########           # #      #                                                        #   #  #  #  #     #    # #                                                                     # # # # # # # #                                              #   #  #                                                                                                                                                                                                                                                                         
                                  #                             #         ##    #                #      # #####  #                     # #      #                                                        #### ##  #  ###   ###   # #                                                                     # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                   #################           #               #   ##  # #  ##   #      #         ###    ###       # ##  #      #    ###@~##########################################          #  #   # #   # #   # #                                                                     # # # # # @ # #                                              #                                                                                                                                                                                                                                                                                
                                                    #         #               #    # # # # #    # # ### #            #  #   #########  # #      # # #                                               #        #  #   ## ## ## ##   #                                                                      # # # # # ~ # #                                              #                                                                                                                                                                                                                                                                                
                                   #################         #               #     ##  # #  #  #   ## ##              # #          # ####       #    ###############################################        # # #  # ### # ### #                                                                         # # # # # # # #                                              #                                                                                                                                                                                                                                                                                
                                  #                  # ## ###               #      # # # #   # #    # # #              #               #        #                                                           ### #  #     #     #                                                                         # # # # # # # #                                             #                                                                                                                                                                                                                                                                                 
                                   ####################  #                 #       ##   #  ##  #    ###  #                                      #                                                            #  #   #    #    #                                                                          # # # # # # # #                                            #                                                                                                                                                                                                                                                                                  
                                                     # ####               #                    #     #    #                                     #####                                                         # #    #  ###  #                                                                           # # # # # # # #                                           #                                                                                                                                                                                                                                                                                   
                                                         # #             #                     #     #     #                                         #                          ######################         #      # # # #                                                                            # # # # # @ # #                                          #                                                                                                                                                                                                                                                                                    
                                                           #             #  ### ##  ##   #  ## # ### # ### #                    #                   #                          #                      #                ## ##                                                                             # # # # # ~ # #                                         #                                                                                                                                                                                                                                                                                     
                                                           #             #  #   # # # # # # #   ## ## ## ##                                        #                            #####################  #          ##### ### ##########################                                                   # # # # # # # #                                        #                                                                                                                                                                                                                                                                                      
                                    #######################           ## #  ##  ##  ##  # # ##   # #   # #                      #                  #                                                 #  #    ##  #                                    #                                                  # # # # # # # #                                       #                                                                                                                                                                                                                                                                                       
                                   #                                 ## # # #   # # # # # # # #  ###   ###                     ~ #                 #                  ############################# #    ##### ##   ##################################                                                   # # # # # # # #                                      #                                                                                                                                                                                                                                                                                        
                                   #  ############################# # ##  # #####  ##  # # ## #   #     #                      @ #                 #                 #                             #         ##    #                                                                                     # # # # # # # #                                     #                                                                                                                                                                                                                                                                                         
                                   # #                             #      # #                     #      ##########  #          #                  #                  #################           #               #   ##  # #  ##                                                                        # # # # # @ # #                                    #                                                                                                                                                                                                                                                                                          
                                   #  #################           #        #                      #                #                                #                                  #         #               #    # # # # #                                                                          # # # # # ~ # #                                   #                                                                                                                                                                                                                                                                                           
                                   #                   #         # ###    ###                     #               #  ##                              #                #################         #               #     ##  # #  #                                                                         # # # # # # # #                                  #                                                                                                                                                                                                                                                                                            
                                   #  #################         #     #    #                      #       ########                                    #              #                  # ## ###               #      # # # #   #                                                                        # # # # # # # #                                 #                                                                                                                                                                                                                                                                                             
                                   # #                  # ## ###       ####                       #      #           # ###########################     #              ####################  #                 #       ##   #  ##                                                                         # # # # # # # #                                #                                                                                                                                                                                                                                                                                              
                                   #  ####################  #                                     #       #############                           #     #                               # ####               #                                                                                           # # # # # # # #                               #                                                                                                                                                                                                                                                                                               
                                   #                    # ####    ###################             #                  # ##                          #     #                                  # #             #                                                                                            # # # # # @ # #                              #                                                                                                                                                                                                                                                                                                
                                    ###################     # #  #                   #            #                      ##                         #     #                                   #            #   ### ##  ##   #  ##                                                                        # # # # # ~ # #                             #                                                                                                                                                                                                                                                                                                 
                                                       #      #  #  ##### # #####    #             #                    #  #                         #     #                                  #           #    #   # # # # # # # #                                                                       # # # # # # # #                            #                                                                                                                                                                                                                                                                                                  
                                    ###################     # #  # #     ###     #  #               #                # #   #                          #     #          #######################           #     ##  ##  ##  # # ##                                                                        # # # # # # # #                           #                                                                                                                                                                                                                                                                                                   
                                   #                          #  #  ###   # ########                 ##################     #                          #     #        #                                 #    # #   # # # # # # # #                                                                       # # # # # # # #                          #                                                                                                                                                                                                                                                                                                    
                                    ###################        # #     #         #                                   # #     #                          #     #       #  ############################# #     # #####  ##  # # ## #        ###@~##########################################                # # # # ~ # # #                         #                                                                                                                                                                                                                                                                                                     
                                                       #      #####   #      ##  #                                     #      #          #               #     #      # #                             #      # #                       # #                                               #               # # # # @ @ # #                        #                                                                                                                                                                                                                                                                                                      
                                      #################        # #    #     #  # #                                    #        ######## ############      #     #     #  #################           #        #                           ###############################################                # # # # # ~  #                        #                                                                                                                                                                                                                                                                                                       
                                     #                        ## ##### # #  #   #                          ###########                 # #          #      #     #    #                   #         # ###    ###                                                                                         # # # # # #                          #                                                                                                                                                                                                                                                                                                        
                                      #################      # ###      ######  #   ###                   #                            # #          #       #     #   #  #################         #     #    #                     #                                                                    # # # # # #                         #                                                                                                                                                                                                                                                                                                         
                                                       #     #         # #  #  ### ## ##                   #                            #            #       #     #  # #                  # ## ###       ####                                                                                           # # # # # #                        #                                                                                                                                                                                                                                                                                                          
                                                        #     #        #    #   # # # # ## #             # #                           ###            #       #    #  #  ####################  #                                    #                     ########                                       # # # # ~ #                       #                                                                                                                                                                                                                                                                                                           
                                                        #      #        ####   ## # ###   ###              #                            #              #       #   #  #                    # ####    ###################      #    ~ #                ####        #                                      # # # # @ @                      #                                                                                                                                                                                                                                                                                                            
                                                        #       #           ###  #   #   # # # #   #### #####                           #               #      #   #   ###################     # #  #                   #          @ #               #      ~#    #                                      # # # # # ~                     #                                                                                                                                                                                                                                                                                                             
                                                        #        #              ###   #  #    ### #    #   #                            #                #     #   #                      #      #  #  ##### # #####    #           #                #     @  #   #                                      # # # # # #                    #                                                                                                                                                                                                                                                                                                              
                                                        #         ########       #     ####### # #    ###   ##                          #                #     #   #   ###################     # #  # #     ###     #  #                             #      ##     #                                     # # # # # #                   #                                                                                                                                                                                                                                                                                                               
                                                        #        #        #       #####  #   #    #    #               #################                 #     #   #  #                          #  #  ###   # ########                               ####          #####                               #  # # # # #                  #                                                                                                                                                                                                                                                                                                                
                                                        #       #   ####   #                 #  # #     #########     #                                  #     #   #   ###################        # #     #         #                                     #              #                             #   # # # ~ #                 #                                                                                                                                                                                                                                                                                                                 
                                                        #      ### #    #   #                 ######             ######################################  #     #   #                      #      #####   #      ##  #                                     #               #   ###       ###############    # # # @ @                #                                                                                                                                                                                                                                                                                                                  
                                                        #       #  #   #     #                  #  # #     #                                           # #     #   #   ###################        # #    #     #  # #                                    #                 # #   #######                  #  # # # ~               #                                                                                                                                                                                                                                                                                                                   
                                                        #      # # #   #  ## #                 #####                           ########################  #     #   #  #                          ## ##### # #  #   #                          ###########                   #             ################   # # # #              #                                                                                                                                                                                                                                                                                                                    
                                                        #      # #  # #  #  #    ~## ##       # # #  ##########################                          #     #   #   ###################      # ###      ######  #   ###                   #                                           #                   # # # #             #                                                                                                                                                                                                                                                                                                                     
                                                        #      # #  # #  # ###  @   #  #      #    ##                          #                         #     #   #                      #     #         # #  #  ### ## ##                   #                                         #                    # # # #            #                                                                                                                                                                                                                                                                                                                      
                                                        #      # #  # #  #  #  ###   #  #      #    # #                         #                        #     #   #                       #     #        #    #   # # # # ## #             # #   #     #     #                 #       #                    # # ~ #           #                                                                                                                                                                                                                                                                                                                       
                                                        #      # #  # #  #  #   #     #  # #    #    #### #                      #                       #     #    #                      #      #        ####   ## # ###   ###              #                                         #                    # #  @           #                                                                                                                                                                                                                                                                                                                        
                                                        #      # #  # # # ###### #     ~  ###    #    #  ###################    ###               ########     #     #                     #       #           ###  #   #   # # # #   ##########                                        #                    # #             #                                                                                                                                                                                                                                                                                                                         
                                                         #     # #  # # #   #  # # ### @ # # # #  #    ## #                 #  # # ###           #             #     #                     #        #              ###   #  #    ### #        #  #                                     #                     # #            #                                                                                                                                                                                                                                                                                                                          
                                                          #    #  ##  #  ##   ### ## ##  @    ### #   #       ##############   #      #         #               #    #                     #         ########       #     ####### # #          ##                                     #                      # #           #                                                                                                                                                                                                                                                                                                                           
                                                           #  ###     #    #   #   # #  ~@#### # #   #       #                 #      #        #                 # # #                     #        #        #       #####  #   #    #                                                #                      # #          #                                                                                                                                                                                                                                                                                                                            
                                                            #  # ##### #### ###    ### # @   #    #   #######                  #      #       #                 #####                      #       #   ####   #                 #  # #                                                #                      # #         #                                                                                                                                                                                                                                                                                                                             
                                                             # #                    #  #     #  # #          #                 #   ###       #                  #  #                       #      ### #    #   #                 ######                                              ##                      # #        #                                                                                                                                                                                                                                                                                                                              
                                                              # #########   @~####@~    ##@   ######  #######                   ###         #                   ##########                 #       #  #   #     #                  #  # #     #                                  ####                        # #       #                                                                                                                                                                                                                                                                                                                               
                                                                         # #               ~ #  #  # #                     #####           #                     # #      ####             #      # # #   #  ## #                 #####                                          #                           # #      #                                                                                                                                                                                                                                                                                                                                
                                                                   ######   ###~@####~@####  # ##### #            #########               #                     #             ####         #      # #  # #  #  #    ### ##       # # #  ##########################               #                            # ######                                                                                                                                                                                                                                                                                                                                 
                                                                  #                          #  # #  #            #                      #                     #                  #        #      # #  # #  # ###  #   #  #      #    ##                          #              #                                                                                                                                                                                                                                                                                                                                                                     
                                                                   ## ## ####################      ##             #                     #                     #                    #       #      # #  # @  #  #  ###   #  #      #    # #                         #             #                                                                                                                                                                                                                                                                                                                                                                     
                                                                     #  #                                         #                    #                     #                      #      #      # #  # ~  #  #   #     #  # #    #    #### #                      #            #                                                                                                                                                                                                                                                                                                                                                                     
                                                                    ### #                           #             #                   #        ##############                       #      #      # #  # # # ###### #     #  ###    #    #  ###################    ###           #                                                                                                                                                                                                                                                                                                                                                                     
                                                                     #  #                                         #      #############        #                                     ##      #     # #  # # #   #  # # ### # # # # #  #    ## #                 #  # # ###        #                                                                                                                                                                                                                                                                                                                                                                     
                                                                     #  #                                         #     #                    #                                        ##     #    #  ##  #  ##   ### ## ##  #    ### #   #       ##############   #      #       #                                                                                                                                                                                                                                                                                                                                                                     
                                                                      ##                                          #    #          ###########                                          #      #  ###     #    @   #   # #  ###### # #   #       #                 #      #       #                                                                                                                                                                                                                                                                                                                                                                     
                                                                                         #########################    #    #######                                                     #       #  # ##### ###~ ###    ### # #   #    #   #######    ###########   #      #       #                                                                                                                                                                                                                                                                                                                                                                     
                                                                                        #                            #    #                           ##############                   #        # #                    #  #     #  # #          #  #           #  #   ###        #                                                                                                                                                                                                                                                                                                                                                                     
                                                                                         #########################  #     # ##########################              #                   ##       # #########   ########    ##@   ######  #######  #  ########   #  ###    ########                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                  ##      # #                                        #                   #                  # #               ~ #  #  # #        #  #        #  # #      #                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                  #       # #                                         ##                 #            ######   ###############  # ##### #  ######  #  ########  # #     #                                                                                                                                                                                                                                                                                                                                                                              
                                                                                                                  #       #  #########################                  #                 #          #                          #  # #  # #        # #          #  #   #                                                                                                                                                                                                                                                                                                                                                                               
                                                                                         #########################        #                           #                  #########        #           ## ## ####################      ##  #       #  #          #  #  #                                                                                                                                                                                                                                                                                                                                                                                
                                                                                        #                                 #  #########################                            #       #             #  #                               #######   #          #  #  #                                                                                                                                                                                                                                                                                                                                                                                
                                                                                         #########################        # #                                                      ##     #            ### #                           #             #           # # #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       # #                                                       ###   #             #  #      ###################################   #########  # #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       # #                                                         #    #########    #  #     #                                     #           # #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       #  #########################                                #             #    ##       ##################################   ##########  # #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       #                           #                               #             #                                               #            # # #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       #  #########################                                ######         #                                ##############    #########  # #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       # #                                                              #          #        ##                                                 #  #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       # #                                                              #           #      #  # # #############################################   #                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                  #       # #                                                              #           #     #  #####                                               #                                                                                                                                                                                                                                                                                                                                                                                  
                                                                                                                  #       # #                                                              #            #####   #  #          ######################################                                                                                                                                                                                                                                                                                                                                                                                   
                                                                                                                  #       # #                                                               #                   ##############                                                                                                                                                                                                                                                                                                                                                                                                                         
                                                                                                                  #       # #                                                               #                    # #                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                                                                                                  #       # #                                                                ####################                                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                  #       # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                  #       # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                  #       # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                  #       # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                  #       # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                       ###########################################        #  ###########################################                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                      #                                                   #                                             #                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                       ###########################################        #  ###########################################                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                  #       # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                  #       # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                  #        ##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                  #         #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                               ##############~@#  ###       ###       ###     # ###       ###     # ##@     # ###       ###       ###       ###                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                              #                 ### ## ## ### ## ## ### ## ## ### ## ## ### ## ## ### @~ ~@ ### ## ## ### ## ## ### ## ## ### ## ##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
                                               #################  # # #  #  # # #  #  # # #  #  # # #  #  # # #  #  # @ #  #  # # #  #  # # #  #  # # #  #  # # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                  ### # ### ### # ### ### # ### ### # ### ### # ### ### # @@@ ### # ### ### # ### ### # ### ### # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
                                                             #     #  @  #   #  #  #   #  #  #   #  #  #   #  #  #   #  #  ~   #  #  #   #  #  #   #  #  #   #  #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                   # ~ # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                   # # # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # # #   # # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                    #  # @    #  # #    #  # #    #  # #    #  # #    #  ~ #    #  # #    #  # #    #  # #    #  # #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                                                      #  ~      #  #      #  #      #  #      #  #      @  #      #  #      #  #      #  #      #  #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                                                      #  #      #  #      #  #      #  #      #  #      #  #      #  #      #  #      #  #      #  #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                                                      #  #      #  #      #  #      #  #      #  #      #  #      #  #      #  #      #  #      #  #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                                                       ##        ##        ##        ##        ##        ##        ##        ##        ##        ##