0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
231
228
228
228
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
359
389
389
390
391
390
396
401
414
416
419
422
424
427
429
431
432
436
439
441
444
448
451
453
454
455
457
458
458
457
458
460
460
460
461
462
464
466
466
471
475
481
481
481
481
481
480
483
489
491
494
498
499
500
504
505
505
505
506
507
506
508
509
512
513
517
517
518
519
519
517
515
516
513
508
510
530
535
539
541
548
548
548
547
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
619
617
617
615
613
579
579
573
572
572
571
571
571
572
569
567
567
570
570
557
558
563
557
555
552
549
546
545
544
535
532
529
525
519
515
511
508
501
495
480
480
467
467
466
458
463
467
468
467
467
0
353
0
0
436
439
439
456
463
464
481
481
481
484
484
485
481
490
490
490
491
483
494
495
497
510
531
531
531
531
543
550
550
550
551
556
555
563
565
568
568
0
596
593
594
594
594
592
0
600
0
611
612
611
615
616
616
618
619
625
631
642
651
653
650
655
654
652
635
620
622
625
634
636
635
634
637
636
631
635
640
631
628
626
622
617
620
621
624
626
628
628
639
642
647
650
652
654
651
652
650
630
613
613
618
618
617
625
623
626
628
621
616
615
613
610
601
608
606
609
615
609
609
609
609
610
614
615
613
569
566
565
576
577
578
585
589
584
595
596
597
596
593
594
595
596
585
574
577
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
524
526
516
516
516
513
507
503
501
505
505
507
510
495
496
492
489
485
485
486
486
485
486
485
484
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
744
742
739
732
725
712
0
0
695
685
686
685
683
676
676
675
674
673
675
677
676
675
673
673
666
665
0
655
652
649
649
641
640
640
641
640
644
647
648
648
645
644
643
631
628
629
630
629
629
629
628
632
634
634
634
634
634
634
626
625
627
628
630
0
0
626
626
626
0
614
613
612
612
613
613
613
613
613
613
601
599
599
597
598
597
597
597
595
594
593
593
592
592
592
588
588
587
583
582
581
575
578
581
584
583
588
590
591
593
595
595
595
600
600
602
613
618
619
620
619
632
632
630
635
635
631
628
629
665
669
682
691
695
696
693
693
693
687
684
686
674
674
670
668
672
668
668
658
661
655
653
662
661
660
660
660
659
658
658
648
647
629
628
626
619
614
614
614
614
615
613
614
615
608
610
608
610
0
613
612
613
614
617
619
621
624
623
625
624
621
619
621
622
622
617
621
623
609
614
613
612
597
601
637
658
659
661
663
676
683
685
690
701
708
709
715
719
723
724
729
739
742
744
748
752
752
754
757
755
753
749
752
752
758
757
757
754
753
757
751
755
746
736
728
721
720
697
697
697
690
699
703
701
702
707
703
698
705
709
707
706
686
695
744
659
654
652
682
689
0
696
709
709
712
712
714
716
718
718
713
707
704
699
693
693
691
694
689
687
696
693
694
694
694
694
694
695
700
700
700
698
689
689
684
681
680
657
655
652
650
651
651
653
0
0
653
657
650
661
666
664
665
651
0
650
648
654
651
662
662
662
661
670
674
674
663
660
667
668
673
674
661
656
657
658
657
654
655
649
643
644
651
651
650
658
657
655
660
665
662
678
680
678
672
677
681
682
689
687
681
684
686
686
684
679
670
672
672
670
667
667
665
665
665
664
664
665
664
664
668
667
665
661
656
653
650
655
652
649
649
647
645
639
641
644
646
642
639
635
625
625
624
625
626
626
629
628
636
0
637
636
630
641
638
636
636
637
639
638
641
649
650
654
655
657
660
661
663
661
660
657
669
669
0
665
670
671
669
669
672
675
675
682
0
677
680
674
668
665
686
692
0
699
697
700
703
709
708
708
710
709
707
708
707
707
704
705
717
718
715
706
705
708
691
687
684
682
680
678
669
666
666
665
667
665
661
661
658
660
658
654
664
663
663
662
664
667
667
668
668
668
668
667
668
668
668
668
666
668
669
663
661
658
657
657
657
654
660
660
660
665
663
661
661
656
650
652
656
662
664
667
670
670
671
670
671
677
678
680
684
684
681
675
661
660
659
659
658
658
652
665
663
663
662
662
663
663
671
671
672
671
671
659
657
655
654
653
641
641
640
640
639
627
626
626
621
624
625
625
626
626
626
626
635
636
638
638
676
676
676
675
674
674
674
675
714
714
696
680
685
690
683
687
688
685
695
699
695
698
694
694
693
696
700
699
698
699
0
691
694
0
693
680
678
675
675
676
680
679
679
679
678
677
679
678
676
673
671
667
662
660
665
662
659
656
654
653
654
654
655
653
645
641
649
649
650
655
655
655
650
654
652
652
652
659
652
652
635
632
630
630
630
629
631
629
621
623
623
623
625
626
623
625
626
626
625
627
629
629
629
634
634
632
631
632
633
637
638
638
637
638
638
643
643
644
643
646
648
646
645
642
648
638
647
650
650
647
646
647
648
649
650
656
657
654
657
657
660
666
676
676
676
679
682
680
683
685
687
687
689
691
692
692
693
693
692
694
695
700
699
698
700
700
702
702
703
727
736
735
735
735
736
747
749
750
750
749
749
746
745
748
748
749
749
750
749
757
758
757
759
766
768
776
774
779
780
774
772
767
764
773
778
775
773
778
785
791
788
790
790
787
788
790
795
796
798
801
805
808
811
812
818
823
824
823
825
828
830
830
829
829
829
829
827
827
827
827
827
826
826
826
824
825
825
826
827
827
831
833
832
834
832
833
833
837
834
831
831
836
839
842
844
848
852
853
855
858
858
859
860
869
870
871
874
879
879
879
878
879
886
888
902
897
895
897
901
906
923
928
936
942
940
945
948
954
954
953
954
957
959
958
960
964
966
0
963
997
994
994
996
992
1001
1002
1016
1030
1035
1032
1032
1039
1047
1047
1047
1045
1046
1046
1046
1047
1047
1048
1050
1051
1052
1052
1053
1054
1055
1056
1058
1067