Cody

# Problem 1894. GJam 2014 China Rd A: Library Sorting (Large)

Solution 346246

Submitted on 6 Nov 2013 by J.R.! Menzinger
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

### Test Suite

Test Status Code Input and Output
1   Pass
%% tic v=[1 ]; vexp=[1 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

2   Pass
%% v=[2 1 ]; vexp=[2 1 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

3   Pass
%% v=[1 2 3 ]; vexp=[1 2 3 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

4   Pass
%% v=[1 2 3 4 5 ]; vexp=[1 4 3 2 5 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

5   Pass
%% v=[5 2 3 4 1 ]; vexp=[1 4 3 2 5 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

6   Pass
%% v=[994 994 -981 -975 -971 980 -971 976 -969 -969 968 968 958 -963 -957 948 -955 932 926 -935 924 -931 -923 -917 922 -917 -909 -899 916 914 -899 -877 -871 -871 -867 -847 912 -829 912 -825 -819 -817 910 -811 -805 -803 -801 904 -791 -783 -745 -731 902 -725 -725 -715 900 896 -707 896 -705 -705 -693 -691 882 -687 -685 -683 -671 -663 882 -663 880 880 -651 -651 -637 876 -637 -623 -613 -605 -601 -577 -577 862 -571 -565 856 848 -559 -559 -555 -553 844 -551 840 828 -547 -539 -527 812 -525 806 802 -505 -503 -497 -497 -495 798 -493 -491 -483 -481 798 770 770 -481 770 762 758 -477 -469 -463 -457 756 -455 -451 -441 -439 -431 -429 752 -427 -413 -409 742 -403 726 -391 722 -389 -385 718 -379 -365 -363 -359 712 702 -355 -351 682 -347 682 674 672 -343 672 -325 664 -319 -319 -315 -309 -297 -287 -285 -279 662 658 -277 658 656 650 -275 644 -259 -259 -259 630 -255 -251 -245 -231 -231 -225 -221 -219 -215 628 616 -213 612 -209 -209 598 -207 -203 -193 594 -191 -165 594 574 -163 -137 -129 -129 -119 -119 -119 -113 -111 572 564 560 -101 -99 -93 -91 546 -91 546 -91 542 -67 534 -63 528 -57 -55 -55 -49 -39 -37 522 -35 -31 520 -29 -25 -21 -17 -15 -11 -11 514 510 500 -9 494 -5 15 17 490 23 490 484 33 476 33 47 464 49 59 63 77 462 462 77 460 458 77 77 81 444 444 95 442 97 99 105 105 107 111 113 117 434 424 420 119 133 416 408 394 380 376 135 143 143 376 374 147 368 175 342 338 338 336 185 187 195 195 336 197 197 334 201 326 203 316 312 312 308 308 300 211 286 219 219 237 239 247 249 251 253 259 265 273 284 277 262 258 283 285 287 289 297 248 242 303 305 319 327 335 351 357 385 385 238 232 220 397 399 401 210 403 407 210 210 409 204 411 200 415 425 425 200 429 198 429 198 196 192 190 186 433 435 441 451 463 473 473 182 483 182 495 176 170 154 507 507 150 148 509 529 533 148 130 128 124 112 539 96 551 555 70 561 70 565 577 581 581 585 599 70 609 58 56 611 44 613 44 621 625 625 36 627 28 26 2 627 637 647 651 0 685 689 689 689 0 693 693 693 0 -10 -14 -40 -42 -44 697 -56 705 707 715 -56 -64 715 719 -66 -66 721 729 729 731 741 741 763 763 -74 767 775 811 815 819 827 833 -78 845 845 -80 -82 847 847 847 851 867 -84 869 869 869 871 -86 873 -98 -98 -104 875 875 879 887 911 935 -118 935 -120 949 951 965 973 975 979 -128 -132 -138 -140 -150 -154 -154 -164 -172 -174 -188 -196 -198 -200 -204 -208 -214 -216 -224 -228 -238 -242 -242 -250 -260 -260 -280 -286 -294 -296 -298 -302 -304 -308 -324 -330 -336 -336 -340 -342 -342 -344 -352 -352 -360 -360 -364 -364 -366 -368 -370 -378 -384 -384 -384 -392 -392 -396 -402 -402 -406 -410 -410 -416 -420 -420 -420 -432 -436 -440 -442 -458 -462 -470 -478 -482 -494 -500 -502 -504 -514 -520 -524 -530 -532 -534 -546 -548 -550 -550 -552 -558 -560 -566 -572 -572 -594 -598 -600 -602 -616 -626 -632 -638 -640 -650 -652 -664 -666 -676 -676 -684 -694 -700 -704 -710 -714 -720 -728 -728 -732 -738 -750 -758 -758 -776 -778 -782 -792 -794 -798 -798 -808 -810 -812 -814 -814 -818 -826 -836 -846 -856 -858 -858 -858 -860 -866 -866 -886 -892 -896 -900 -902 -906 -910 -910 -910 -924 -926 -926 -934 -938 -940 -942 -944 -946 -952 -952 -966 -966 -968 -968 -976 ]; vexp=[994 994 -981 -975 -971 980 -971 976 -969 -969 968 968 958 -963 -957 948 -955 932 926 -935 924 -931 -923 -917 922 -917 -909 -899 916 914 -899 -877 -871 -871 -867 -847 912 -829 912 -825 -819 -817 910 -811 -805 -803 -801 904 -791 -783 -745 -731 902 -725 -725 -715 900 896 -707 896 -705 -705 -693 -691 882 -687 -685 -683 -671 -663 882 -663 880 880 -651 -651 -637 876 -637 -623 -613 -605 -601 -577 -577 862 -571 -565 856 848 -559 -559 -555 -553 844 -551 840 828 -547 -539 -527 812 -525 806 802 -505 -503 -497 -497 -495 798 -493 -491 -483 -481 798 770 770 -481 770 762 758 -477 -469 -463 -457 756 -455 -451 -441 -439 -431 -429 752 -427 -413 -409 742 -403 726 -391 722 -389 -385 718 -379 -365 -363 -359 712 702 -355 -351 682 -347 682 674 672 -343 672 -325 664 -319 -319 -315 -309 -297 -287 -285 -279 662 658 -277 658 656 650 -275 644 -259 -259 -259 630 -255 -251 -245 -231 -231 -225 -221 -219 -215 628 616 -213 612 -209 -209 598 -207 -203 -193 594 -191 -165 594 574 -163 -137 -129 -129 -119 -119 -119 -113 -111 572 564 560 -101 -99 -93 -91 546 -91 546 -91 542 -67 534 -63 528 -57 -55 -55 -49 -39 -37 522 -35 -31 520 -29 -25 -21 -17 -15 -11 -11 514 510 500 -9 494 -5 15 17 490 23 490 484 33 476 33 47 464 49 59 63 77 462 462 77 460 458 77 77 81 444 444 95 442 97 99 105 105 107 111 113 117 434 424 420 119 133 416 408 394 380 376 135 143 143 376 374 147 368 175 342 338 338 336 185 187 195 195 336 197 197 334 201 326 203 316 312 312 308 308 300 211 286 219 219 237 239 247 249 251 253 259 265 273 284 277 262 258 283 285 287 289 297 248 242 303 305 319 327 335 351 357 385 385 238 232 220 397 399 401 210 403 407 210 210 409 204 411 200 415 425 425 200 429 198 429 198 196 192 190 186 433 435 441 451 463 473 473 182 483 182 495 176 170 154 507 507 150 148 509 529 533 148 130 128 124 112 539 96 551 555 70 561 70 565 577 581 581 585 599 70 609 58 56 611 44 613 44 621 625 625 36 627 28 26 2 627 637 647 651 0 685 689 689 689 0 693 693 693 0 -10 -14 -40 -42 -44 697 -56 705 707 715 -56 -64 715 719 -66 -66 721 729 729 731 741 741 763 763 -74 767 775 811 815 819 827 833 -78 845 845 -80 -82 847 847 847 851 867 -84 869 869 869 871 -86 873 -98 -98 -104 875 875 879 887 911 935 -118 935 -120 949 951 965 973 975 979 -128 -132 -138 -140 -150 -154 -154 -164 -172 -174 -188 -196 -198 -200 -204 -208 -214 -216 -224 -228 -238 -242 -242 -250 -260 -260 -280 -286 -294 -296 -298 -302 -304 -308 -324 -330 -336 -336 -340 -342 -342 -344 -352 -352 -360 -360 -364 -364 -366 -368 -370 -378 -384 -384 -384 -392 -392 -396 -402 -402 -406 -410 -410 -416 -420 -420 -420 -432 -436 -440 -442 -458 -462 -470 -478 -482 -494 -500 -502 -504 -514 -520 -524 -530 -532 -534 -546 -548 -550 -550 -552 -558 -560 -566 -572 -572 -594 -598 -600 -602 -616 -626 -632 -638 -640 -650 -652 -664 -666 -676 -676 -684 -694 -700 -704 -710 -714 -720 -728 -728 -732 -738 -750 -758 -758 -776 -778 -782 -792 -794 -798 -798 -808 -810 -812 -814 -814 -818 -826 -836 -846 -856 -858 -858 -858 -860 -866 -866 -886 -892 -896 -900 -902 -906 -910 -910 -910 -924 -926 -926 -934 -938 -940 -942 -944 -946 -952 -952 -966 -966 -968 -968 -976 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

7   Pass
%% v=[-979 990 -975 -973 -971 -955 990 -953 -943 -937 -925 -921 986 -917 -913 -911 -909 984 -905 -903 -901 -897 -897 -889 -877 -875 980 968 -875 -871 -861 966 -861 -859 -855 948 942 -823 -821 -811 -805 -805 -797 -795 -793 -793 -793 938 -791 936 -781 -779 936 924 -775 -775 -767 924 920 -757 -755 914 -755 -751 -751 -749 906 -749 906 -745 -745 902 -741 902 -737 898 -735 -729 -727 894 882 868 -723 -709 862 858 858 -705 842 842 838 -693 -681 -679 838 -665 -651 -641 -629 -627 836 -627 828 -623 -623 824 -617 -585 -575 -571 -563 816 -561 -561 -559 -559 -549 808 -539 -539 -535 796 -533 -533 -527 792 -525 788 -525 -521 -517 788 -517 -511 -511 -493 756 -491 756 752 -485 -477 736 -465 -455 -453 716 -451 -441 -429 714 712 712 -427 -407 710 -399 -393 -393 -391 -385 -381 710 -379 702 700 698 -371 -371 -371 -359 -349 684 -341 672 -339 -337 -331 -319 652 636 -315 636 -315 -303 630 630 630 -301 -301 -297 -297 630 -297 -295 -291 -287 -281 624 -267 -267 624 -255 624 -247 616 -247 608 -245 -243 -241 -237 -237 -233 -231 -225 -221 -205 -201 604 -193 602 -185 602 600 -175 -167 -167 598 594 594 -163 -143 -143 588 584 -139 582 578 -133 -121 -117 -103 -95 -91 -89 -65 -65 -55 574 -49 572 -45 572 -39 572 -39 -35 -35 570 -31 -23 -19 560 -7 560 548 7 542 7 9 532 11 11 31 33 37 532 55 532 522 71 77 520 506 504 500 85 91 91 496 494 91 490 93 93 95 448 105 448 440 107 109 111 117 436 125 416 125 404 129 133 384 137 139 141 143 378 378 143 374 364 362 360 147 147 151 352 157 352 338 159 169 181 336 187 203 332 205 330 207 207 219 223 326 318 229 308 231 231 298 294 239 292 239 243 253 292 257 259 261 273 286 284 275 281 287 295 295 297 297 299 307 307 311 313 313 282 278 276 272 264 327 250 329 333 248 343 246 343 242 349 351 353 357 359 363 377 379 381 385 242 385 385 240 389 226 226 401 226 403 405 417 419 226 429 429 429 431 222 461 463 216 477 481 483 483 214 495 204 198 188 497 507 507 184 184 517 519 531 182 533 182 535 539 539 545 567 573 587 180 589 595 174 154 595 595 144 597 144 609 623 144 631 637 637 657 142 659 132 663 130 665 665 669 679 689 126 693 124 693 106 697 701 100 707 100 709 715 715 98 721 723 733 88 737 72 66 52 52 50 40 737 749 749 34 755 759 767 34 769 32 771 26 26 26 773 26 779 14 783 8 0 787 791 0 791 793 0 793 0 815 817 819 819 -10 819 819 819 821 821 823 827 -14 827 831 845 -38 859 861 -42 865 873 877 881 891 893 909 -44 -50 911 913 915 921 923 935 945 945 951 -50 -52 -54 953 -64 -66 -68 -80 959 961 -82 -84 -92 967 975 -98 -98 -106 -110 -110 -112 -122 -126 -140 -140 -144 -148 -154 -154 -154 -154 -162 -162 -168 -172 -182 -182 -204 -204 -208 -220 -220 -228 -232 -240 -248 -252 -254 -256 -256 -264 -266 -276 -280 -286 -286 -286 -294 -294 -294 -296 -300 -300 -300 -306 -310 -312 -314 -314 -320 -346 -346 -362 -362 -366 -368 -368 -370 -378 -380 -380 -384 -392 -392 -410 -410 -412 -424 -430 -430 -434 -434 -434 -436 -436 -438 -438 -442 -444 -444 -448 -462 -468 -480 -488 -494 -506 -512 -512 -518 -530 -530 -536 -536 -536 -546 -546 -548 -550 -554 -556 -560 -560 -578 -580 -590 -590 -596 -596 -598 -598 -610 -612 -616 -616 -618 -626 -630 -634 -636 -638 -640 -642 -644 -644 -644 -648 -652 -654 -664 -674 -674 -686 -698 -700 -702 -708 -714 -714 -716 -718 -722 -726 -728 -728 -740 -742 -744 -750 -752 -756 -762 -766 -766 -768 -770 -770 -770 -778 -778 -780 -782 -786 -786 -792 -792 -798 -806 -810 -812 -820 -828 -844 -858 -858 -858 -860 -872 -874 -880 -882 -882 -888 -888 -890 -896 -902 -910 -912 -924 -924 -936 -938 -956 -956 -968 -980 -980 -980 -982 -988 -990 -994 -996 -998 ]; vexp=[-979 990 -975 -973 -971 -955 990 -953 -943 -937 -925 -921 986 -917 -913 -911 -909 984 -905 -903 -901 -897 -897 -889 -877 -875 980 968 -875 -871 -861 966 -861 -859 -855 948 942 -823 -821 -811 -805 -805 -797 -795 -793 -793 -793 938 -791 936 -781 -779 936 924 -775 -775 -767 924 920 -757 -755 914 -755 -751 -751 -749 906 -749 906 -745 -745 902 -741 902 -737 898 -735 -729 -727 894 882 868 -723 -709 862 858 858 -705 842 842 838 -693 -681 -679 838 -665 -651 -641 -629 -627 836 -627 828 -623 -623 824 -617 -585 -575 -571 -563 816 -561 -561 -559 -559 -549 808 -539 -539 -535 796 -533 -533 -527 792 -525 788 -525 -521 -517 788 -517 -511 -511 -493 756 -491 756 752 -485 -477 736 -465 -455 -453 716 -451 -441 -429 714 712 712 -427 -407 710 -399 -393 -393 -391 -385 -381 710 -379 702 700 698 -371 -371 -371 -359 -349 684 -341 672 -339 -337 -331 -319 652 636 -315 636 -315 -303 630 630 630 -301 -301 -297 -297 630 -297 -295 -291 -287 -281 624 -267 -267 624 -255 624 -247 616 -247 608 -245 -243 -241 -237 -237 -233 -231 -225 -221 -205 -201 604 -193 602 -185 602 600 -175 -167 -167 598 594 594 -163 -143 -143 588 584 -139 582 578 -133 -121 -117 -103 -95 -91 -89 -65 -65 -55 574 -49 572 -45 572 -39 572 -39 -35 -35 570 -31 -23 -19 560 -7 560 548 7 542 7 9 532 11 11 31 33 37 532 55 532 522 71 77 520 506 504 500 85 91 91 496 494 91 490 93 93 95 448 105 448 440 107 109 111 117 436 125 416 125 404 129 133 384 137 139 141 143 378 378 143 374 364 362 360 147 147 151 352 157 352 338 159 169 181 336 187 203 332 205 330 207 207 219 223 326 318 229 308 231 231 298 294 239 292 239 243 253 292 257 259 261 273 286 284 275 281 287 295 295 297 297 299 307 307 311 313 313 282 278 276 272 264 327 250 329 333 248 343 246 343 242 349 351 353 357 359 363 377 379 381 385 242 385 385 240 389 226 226 401 226 403 405 417 419 226 429 429 429 431 222 461 463 216 477 481 483 483 214 495 204 198 188 497 507 507 184 184 517 519 531 182 533 182 535 539 539 545 567 573 587 180 589 595 174 154 595 595 144 597 144 609 623 144 631 637 637 657 142 659 132 663 130 665 665 669 679 689 126 693 124 693 106 697 701 100 707 100 709 715 715 98 721 723 733 88 737 72 66 52 52 50 40 737 749 749 34 755 759 767 34 769 32 771 26 26 26 773 26 779 14 783 8 0 787 791 0 791 793 0 793 0 815 817 819 819 -10 819 819 819 821 821 823 827 -14 827 831 845 -38 859 861 -42 865 873 877 881 891 893 909 -44 -50 911 913 915 921 923 935 945 945 951 -50 -52 -54 953 -64 -66 -68 -80 959 961 -82 -84 -92 967 975 -98 -98 -106 -110 -110 -112 -122 -126 -140 -140 -144 -148 -154 -154 -154 -154 -162 -162 -168 -172 -182 -182 -204 -204 -208 -220 -220 -228 -232 -240 -248 -252 -254 -256 -256 -264 -266 -276 -280 -286 -286 -286 -294 -294 -294 -296 -300 -300 -300 -306 -310 -312 -314 -314 -320 -346 -346 -362 -362 -366 -368 -368 -370 -378 -380 -380 -384 -392 -392 -410 -410 -412 -424 -430 -430 -434 -434 -434 -436 -436 -438 -438 -442 -444 -444 -448 -462 -468 -480 -488 -494 -506 -512 -512 -518 -530 -530 -536 -536 -536 -546 -546 -548 -550 -554 -556 -560 -560 -578 -580 -590 -590 -596 -596 -598 -598 -610 -612 -616 -616 -618 -626 -630 -634 -636 -638 -640 -642 -644 -644 -644 -648 -652 -654 -664 -674 -674 -686 -698 -700 -702 -708 -714 -714 -716 -718 -722 -726 -728 -728 -740 -742 -744 -750 -752 -756 -762 -766 -766 -768 -770 -770 -770 -778 -778 -780 -782 -786 -786 -792 -792 -798 -806 -810 -812 -820 -828 -844 -858 -858 -858 -860 -872 -874 -880 -882 -882 -888 -888 -890 -896 -902 -910 -912 -924 -924 -936 -938 -956 -956 -968 -980 -980 -980 -982 -988 -990 -994 -996 -998 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

8   Pass
%% v=[-999 968 -991 -983 -977 -975 -973 952 -945 -935 -931 -919 -915 -905 -903 -885 -861 -847 940 -847 -841 938 -825 -821 -811 -809 936 924 902 -791 -779 -771 -767 884 884 880 -757 -735 -735 -717 -717 -715 -715 878 876 -699 -689 -665 -655 -655 -651 -581 -577 -567 -559 -555 -549 -547 -539 858 840 -515 -513 -507 -505 832 804 -477 -473 -467 -457 -443 802 -441 796 -407 -403 -389 792 -385 780 774 -383 -377 -325 -303 770 770 754 -281 742 -257 724 -251 -249 -237 -233 -227 -217 -211 -203 -195 712 704 -179 -177 -147 -119 -99 -77 -57 -49 700 682 670 -49 -39 -35 646 -31 640 -27 624 -5 15 23 31 620 33 588 580 35 53 578 65 560 65 67 71 75 77 79 546 522 506 91 95 103 504 109 117 119 121 478 125 143 145 155 462 163 165 167 175 458 456 454 452 181 189 195 215 229 231 231 257 448 257 448 265 273 432 283 420 325 341 408 343 365 365 397 399 399 411 415 423 423 429 386 435 382 380 437 443 364 364 455 467 364 354 479 330 495 505 505 306 537 539 278 561 563 567 567 573 595 619 258 623 625 647 665 693 699 713 719 721 258 733 737 749 757 819 252 839 238 853 855 224 863 867 871 182 883 893 897 182 182 903 176 150 903 913 136 919 931 933 128 965 967 118 975 993 108 102 98 88 60 42 30 18 14 12 -2 -10 -22 -22 -44 -48 -52 -52 -60 -70 -82 -88 -88 -110 -112 -116 -124 -130 -130 -132 -156 -174 -184 -204 -206 -210 -232 -234 -242 -252 -254 -264 -316 -330 -332 -338 -342 -348 -352 -354 -360 -364 -370 -372 -376 -380 -408 -428 -452 -462 -462 -462 -482 -486 -496 -506 -510 -516 -524 -526 -528 -532 -542 -572 -592 -604 -606 -624 -636 -642 -662 -670 -686 -686 -706 -728 -728 -736 -776 -788 -792 -792 -798 -804 -840 -902 -904 -910 -918 -952 -962 -962 -968 -978 -990 -994 -998 ]; vexp=[-999 968 -991 -983 -977 -975 -973 952 -945 -935 -931 -919 -915 -905 -903 -885 -861 -847 940 -847 -841 938 -825 -821 -811 -809 936 924 902 -791 -779 -771 -767 884 884 880 -757 -735 -735 -717 -717 -715 -715 878 876 -699 -689 -665 -655 -655 -651 -581 -577 -567 -559 -555 -549 -547 -539 858 840 -515 -513 -507 -505 832 804 -477 -473 -467 -457 -443 802 -441 796 -407 -403 -389 792 -385 780 774 -383 -377 -325 -303 770 770 754 -281 742 -257 724 -251 -249 -237 -233 -227 -217 -211 -203 -195 712 704 -179 -177 -147 -119 -99 -77 -57 -49 700 682 670 -49 -39 -35 646 -31 640 -27 624 -5 15 23 31 620 33 588 580 35 53 578 65 560 65 67 71 75 77 79 546 522 506 91 95 103 504 109 117 119 121 478 125 143 145 155 462 163 165 167 175 458 456 454 452 181 189 195 215 229 231 231 257 448 257 448 265 273 432 283 420 325 341 408 343 365 365 397 399 399 411 415 423 423 429 386 435 382 380 437 443 364 364 455 467 364 354 479 330 495 505 505 306 537 539 278 561 563 567 567 573 595 619 258 623 625 647 665 693 699 713 719 721 258 733 737 749 757 819 252 839 238 853 855 224 863 867 871 182 883 893 897 182 182 903 176 150 903 913 136 919 931 933 128 965 967 118 975 993 108 102 98 88 60 42 30 18 14 12 -2 -10 -22 -22 -44 -48 -52 -52 -60 -70 -82 -88 -88 -110 -112 -116 -124 -130 -130 -132 -156 -174 -184 -204 -206 -210 -232 -234 -242 -252 -254 -264 -316 -330 -332 -338 -342 -348 -352 -354 -360 -364 -370 -372 -376 -380 -408 -428 -452 -462 -462 -462 -482 -486 -496 -506 -510 -516 -524 -526 -528 -532 -542 -572 -592 -604 -606 -624 -636 -642 -662 -670 -686 -686 -706 -728 -728 -736 -776 -788 -792 -792 -798 -804 -840 -902 -904 -910 -918 -952 -962 -962 -968 -978 -990 -994 -998 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

9   Pass
%% v=[984 -997 -985 980 -983 978 -971 968 966 958 -969 952 -969 950 -963 944 -957 -955 936 -949 936 -949 -941 926 -935 -931 -917 -913 -913 -907 -903 -891 -861 924 922 918 916 912 902 894 -849 -847 -845 884 -837 878 878 -833 -827 876 862 836 834 832 822 822 -817 -809 -805 -803 -797 -791 804 786 784 -785 -773 778 -773 -763 -749 -749 -745 776 -741 -737 770 -737 -737 -735 -735 -731 -725 770 -723 -707 768 768 -707 762 760 -693 -683 -669 -667 750 746 740 -661 -649 -639 -637 -635 -609 730 728 -603 -595 728 -593 -589 -589 -585 -581 -581 728 -577 -567 -561 -547 724 -541 -539 -539 -539 -527 -525 -523 716 -517 -517 -515 714 702 702 676 -513 -487 -475 -471 672 -469 660 -467 652 -467 -467 634 632 -461 -457 -455 624 -455 -453 -451 624 618 -441 618 614 604 -439 -427 -413 -413 -409 -399 600 -399 594 -397 -387 594 -383 586 582 -377 580 580 -365 -359 -343 -337 578 -329 -327 -325 -323 -323 -315 -313 -301 -293 576 -275 576 572 572 572 -275 572 564 -273 -269 -259 560 -249 -249 560 -233 -233 552 -231 550 -219 -215 -215 -203 -197 -191 -189 -171 -169 -169 -163 -161 -159 -157 546 -155 -153 546 -151 -147 540 -147 -143 -143 -133 -131 -109 -109 -105 518 -105 -99 -99 -99 -99 -75 508 -73 -67 -63 -59 -55 508 -51 -39 -35 -35 506 504 -33 500 -21 -7 496 -7 3 7 11 11 486 482 11 13 15 27 33 35 35 37 37 41 53 55 65 65 77 97 101 113 117 121 476 125 129 472 133 135 468 143 143 151 462 151 151 167 462 462 167 167 167 169 462 189 189 191 193 460 193 195 207 215 217 221 225 225 231 239 460 239 249 448 446 253 265 265 273 283 442 297 299 301 440 307 311 436 436 434 319 325 331 428 418 331 416 333 339 339 349 416 349 359 359 363 363 363 377 385 395 399 399 403 407 417 408 423 431 435 402 400 445 451 453 396 465 467 386 374 364 477 481 364 497 507 507 511 360 511 511 523 531 551 569 577 344 583 587 340 589 330 318 316 595 312 609 310 310 609 609 611 611 611 615 619 621 623 631 637 308 284 284 278 272 272 262 254 641 651 667 252 252 244 669 671 683 242 685 242 234 234 689 234 693 228 693 701 713 224 220 214 713 715 721 725 212 733 735 735 735 210 206 206 737 741 741 198 196 745 753 763 767 196 771 196 188 186 184 182 771 182 783 789 803 811 817 817 823 835 837 839 182 839 841 847 849 853 182 853 861 182 180 865 869 873 875 879 180 176 881 881 891 897 176 174 172 172 897 897 911 921 923 160 156 923 152 144 144 931 943 138 134 122 118 114 112 949 112 949 112 949 953 959 959 959 961 961 104 971 92 90 88 975 979 991 993 80 78 72 72 70 70 66 58 46 40 36 28 28 14 10 2 0 0 0 0 0 -2 -10 -22 -28 -32 -40 -40 -44 -54 -54 -66 -76 -78 -82 -84 -94 -110 -126 -134 -140 -146 -148 -154 -154 -162 -166 -168 -174 -182 -182 -184 -196 -196 -202 -202 -204 -206 -206 -208 -216 -220 -220 -232 -234 -242 -244 -254 -270 -286 -286 -288 -292 -294 -300 -306 -314 -322 -328 -336 -336 -340 -352 -360 -366 -368 -368 -374 -378 -392 -396 -396 -396 -396 -404 -404 -408 -416 -420 -422 -422 -424 -424 -426 -426 -432 -434 -436 -440 -440 -442 -444 -448 -448 -450 -460 -462 -464 -472 -474 -476 -480 -494 -494 -504 -506 -514 -516 -520 -520 -542 -542 -562 -564 -564 -572 -572 -572 -574 -584 -590 -590 -594 -600 -608 -616 -616 -616 -618 -622 -624 -626 -628 -654 -656 -664 -664 -676 -680 -682 -686 -700 -700 -702 -704 -704 -712 -722 -728 -728 -728 -730 -742 -742 -758 -768 -770 -778 -780 -780 -780 -782 -782 -784 -784 -786 -790 -792 -792 -812 -816 -818 -822 -834 -856 -858 -858 -866 -870 -870 -876 -880 -884 -886 -894 -902 -916 -916 -918 -918 -924 -924 -926 -926 -928 -936 -940 -948 -952 -952 -956 -962 -966 -966 -968 -976 -988 -988 -990 -992 -998 ]; vexp=[984 -997 -985 980 -983 978 -971 968 966 958 -969 952 -969 950 -963 944 -957 -955 936 -949 936 -949 -941 926 -935 -931 -917 -913 -913 -907 -903 -891 -861 924 922 918 916 912 902 894 -849 -847 -845 884 -837 878 878 -833 -827 876 862 836 834 832 822 822 -817 -809 -805 -803 -797 -791 804 786 784 -785 -773 778 -773 -763 -749 -749 -745 776 -741 -737 770 -737 -737 -735 -735 -731 -725 770 -723 -707 768 768 -707 762 760 -693 -683 -669 -667 750 746 740 -661 -649 -639 -637 -635 -609 730 728 -603 -595 728 -593 -589 -589 -585 -581 -581 728 -577 -567 -561 -547 724 -541 -539 -539 -539 -527 -525 -523 716 -517 -517 -515 714 702 702 676 -513 -487 -475 -471 672 -469 660 -467 652 -467 -467 634 632 -461 -457 -455 624 -455 -453 -451 624 618 -441 618 614 604 -439 -427 -413 -413 -409 -399 600 -399 594 -397 -387 594 -383 586 582 -377 580 580 -365 -359 -343 -337 578 -329 -327 -325 -323 -323 -315 -313 -301 -293 576 -275 576 572 572 572 -275 572 564 -273 -269 -259 560 -249 -249 560 -233 -233 552 -231 550 -219 -215 -215 -203 -197 -191 -189 -171 -169 -169 -163 -161 -159 -157 546 -155 -153 546 -151 -147 540 -147 -143 -143 -133 -131 -109 -109 -105 518 -105 -99 -99 -99 -99 -75 508 -73 -67 -63 -59 -55 508 -51 -39 -35 -35 506 504 -33 500 -21 -7 496 -7 3 7 11 11 486 482 11 13 15 27 33 35 35 37 37 41 53 55 65 65 77 97 101 113 117 121 476 125 129 472 133 135 468 143 143 151 462 151 151 167 462 462 167 167 167 169 462 189 189 191 193 460 193 195 207 215 217 221 225 225 231 239 460 239 249 448 446 253 265 265 273 283 442 297 299 301 440 307 311 436 436 434 319 325 331 428 418 331 416 333 339 339 349 416 349 359 359 363 363 363 377 385 395 399 399 403 407 417 408 423 431 435 402 400 445 451 453 396 465 467 386 374 364 477 481 364 497 507 507 511 360 511 511 523 531 551 569 577 344 583 587 340 589 330 318 316 595 312 609 310 310 609 609 611 611 611 615 619 621 623 631 637 308 284 284 278 272 272 262 254 641 651 667 252 252 244 669 671 683 242 685 242 234 234 689 234 693 228 693 701 713 224 220 214 713 715 721 725 212 733 735 735 735 210 206 206 737 741 741 198 196 745 753 763 767 196 771 196 188 186 184 182 771 182 783 789 803 811 817 817 823 835 837 839 182 839 841 847 849 853 182 853 861 182 180 865 869 873 875 879 180 176 881 881 891 897 176 174 172 172 897 897 911 921 923 160 156 923 152 144 144 931 943 138 134 122 118 114 112 949 112 949 112 949 953 959 959 959 961 961 104 971 92 90 88 975 979 991 993 80 78 72 72 70 70 66 58 46 40 36 28 28 14 10 2 0 0 0 0 0 -2 -10 -22 -28 -32 -40 -40 -44 -54 -54 -66 -76 -78 -82 -84 -94 -110 -126 -134 -140 -146 -148 -154 -154 -162 -166 -168 -174 -182 -182 -184 -196 -196 -202 -202 -204 -206 -206 -208 -216 -220 -220 -232 -234 -242 -244 -254 -270 -286 -286 -288 -292 -294 -300 -306 -314 -322 -328 -336 -336 -340 -352 -360 -366 -368 -368 -374 -378 -392 -396 -396 -396 -396 -404 -404 -408 -416 -420 -422 -422 -424 -424 -426 -426 -432 -434 -436 -440 -440 -442 -444 -448 -448 -450 -460 -462 -464 -472 -474 -476 -480 -494 -494 -504 -506 -514 -516 -520 -520 -542 -542 -562 -564 -564 -572 -572 -572 -574 -584 -590 -590 -594 -600 -608 -616 -616 -616 -618 -622 -624 -626 -628 -654 -656 -664 -664 -676 -680 -682 -686 -700 -700 -702 -704 -704 -712 -722 -728 -728 -728 -730 -742 -742 -758 -768 -770 -778 -780 -780 -780 -782 -782 -784 -784 -786 -790 -792 -792 -812 -816 -818 -822 -834 -856 -858 -858 -866 -870 -870 -876 -880 -884 -886 -894 -902 -916 -916 -918 -918 -924 -924 -926 -926 -928 -936 -940 -948 -952 -952 -956 -962 -966 -966 -968 -976 -988 -988 -990 -992 -998 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

10   Pass
%% v=[-891 962 792 -851 784 730 -789 -781 662 662 -765 -737 -713 644 -567 -525 -465 534 -451 526 454 -427 -399 -173 -15 454 -1 77 378 175 202 185 170 275 313 367 82 407 459 473 507 621 691 707 731 805 825 935 981 52 48 46 -10 -66 -162 -168 -192 -196 -218 -232 -262 -280 -288 -332 -358 -402 -438 -448 -490 -502 -516 -572 -590 -598 -832 -834 ]; vexp=[-891 962 792 -851 784 730 -789 -781 662 662 -765 -737 -713 644 -567 -525 -465 534 -451 526 454 -427 -399 -173 -15 454 -1 77 378 175 202 185 170 275 313 367 82 407 459 473 507 621 691 707 731 805 825 935 981 52 48 46 -10 -66 -162 -168 -192 -196 -218 -232 -262 -280 -288 -332 -358 -402 -438 -448 -490 -502 -516 -572 -590 -598 -832 -834 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

11   Pass
%% v=[990 988 -999 -995 -993 -993 -991 976 970 958 -989 -973 946 -965 -963 -957 -957 -941 938 -939 -937 -937 -913 -907 -901 938 938 924 -901 -893 924 -891 -889 918 -869 912 910 -869 -869 -845 -827 -811 -793 -741 906 868 -715 -715 844 836 -711 -709 812 -693 -693 -687 -665 808 786 774 -665 -663 -663 -615 -603 -593 -589 770 762 -587 756 -585 -581 -565 -565 -561 -555 -555 -553 -541 706 704 -539 -505 694 -503 -493 -455 -451 672 -427 -399 670 -385 658 -373 -359 656 -339 -335 654 -333 -327 636 -325 -313 -297 -297 -273 616 -263 -253 614 -251 604 590 -219 -209 550 -207 -203 -187 -185 -181 -177 -167 -159 546 -157 -145 -137 544 -135 -105 -77 -71 -67 -65 -41 540 -39 532 528 -37 526 -33 -31 -23 -21 -13 524 11 15 19 520 506 27 37 41 43 494 77 488 89 101 105 127 486 129 131 472 468 458 133 133 139 450 139 171 171 428 175 428 189 203 219 410 237 251 396 255 265 271 273 273 273 293 392 297 376 299 301 315 315 351 373 374 377 377 379 385 387 389 397 407 374 368 409 411 425 433 439 449 451 481 507 535 342 537 553 338 338 575 322 312 577 577 581 583 585 308 306 603 292 264 619 248 242 228 224 623 637 645 220 661 663 208 671 681 204 186 693 693 701 719 721 178 170 737 749 154 763 154 767 154 769 789 154 144 142 130 793 793 795 803 803 805 815 817 819 821 120 823 120 825 86 86 78 74 72 825 62 839 841 861 861 861 873 875 56 875 42 897 935 935 949 12 949 955 955 8 975 979 0 0 0 0 0 -52 -56 -60 -70 -70 -72 -94 -96 -98 -110 -110 -114 -116 -126 -126 -136 -158 -160 -176 -178 -182 -188 -196 -200 -206 -208 -208 -222 -224 -228 -276 -278 -296 -302 -316 -318 -324 -334 -346 -350 -350 -358 -364 -368 -370 -378 -378 -378 -386 -404 -416 -416 -418 -420 -432 -448 -462 -480 -482 -490 -502 -514 -516 -520 -546 -546 -546 -550 -564 -570 -570 -572 -574 -580 -600 -602 -624 -626 -626 -634 -650 -658 -658 -662 -686 -712 -716 -720 -726 -730 -732 -756 -756 -770 -780 -790 -798 -802 -824 -836 -882 -894 -906 -914 -914 -932 -950 -952 -966 -968 -978 -978 -990 -990 ]; vexp=[990 988 -999 -995 -993 -993 -991 976 970 958 -989 -973 946 -965 -963 -957 -957 -941 938 -939 -937 -937 -913 -907 -901 938 938 924 -901 -893 924 -891 -889 918 -869 912 910 -869 -869 -845 -827 -811 -793 -741 906 868 -715 -715 844 836 -711 -709 812 -693 -693 -687 -665 808 786 774 -665 -663 -663 -615 -603 -593 -589 770 762 -587 756 -585 -581 -565 -565 -561 -555 -555 -553 -541 706 704 -539 -505 694 -503 -493 -455 -451 672 -427 -399 670 -385 658 -373 -359 656 -339 -335 654 -333 -327 636 -325 -313 -297 -297 -273 616 -263 -253 614 -251 604 590 -219 -209 550 -207 -203 -187 -185 -181 -177 -167 -159 546 -157 -145 -137 544 -135 -105 -77 -71 -67 -65 -41 540 -39 532 528 -37 526 -33 -31 -23 -21 -13 524 11 15 19 520 506 27 37 41 43 494 77 488 89 101 105 127 486 129 131 472 468 458 133 133 139 450 139 171 171 428 175 428 189 203 219 410 237 251 396 255 265 271 273 273 273 293 392 297 376 299 301 315 315 351 373 374 377 377 379 385 387 389 397 407 374 368 409 411 425 433 439 449 451 481 507 535 342 537 553 338 338 575 322 312 577 577 581 583 585 308 306 603 292 264 619 248 242 228 224 623 637 645 220 661 663 208 671 681 204 186 693 693 701 719 721 178 170 737 749 154 763 154 767 154 769 789 154 144 142 130 793 793 795 803 803 805 815 817 819 821 120 823 120 825 86 86 78 74 72 825 62 839 841 861 861 861 873 875 56 875 42 897 935 935 949 12 949 955 955 8 975 979 0 0 0 0 0 -52 -56 -60 -70 -70 -72 -94 -96 -98 -110 -110 -114 -116 -126 -126 -136 -158 -160 -176 -178 -182 -188 -196 -200 -206 -208 -208 -222 -224 -228 -276 -278 -296 -302 -316 -318 -324 -334 -346 -350 -350 -358 -364 -368 -370 -378 -378 -378 -386 -404 -416 -416 -418 -420 -432 -448 -462 -480 -482 -490 -502 -514 -516 -520 -546 -546 -546 -550 -564 -570 -570 -572 -574 -580 -600 -602 -624 -626 -626 -634 -650 -658 -658 -662 -686 -712 -716 -720 -726 -730 -732 -756 -756 -770 -780 -790 -798 -802 -824 -836 -882 -894 -906 -914 -914 -932 -950 -952 -966 -968 -978 -978 -990 -990 ]; vout=Sort_CH(v); assert(isequal(vout,vexp))

12   Fail