:: foo ( -- ) 0 :> curmin! :> heap t 0 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 1 dup curmin < [ "bad testcase" throw ] when heap heap-push t 1 dup curmin < [ "bad testcase" throw ] when heap heap-push t 7 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 2 dup curmin < [ "bad testcase" throw ] when heap heap-push t 2 dup curmin < [ "bad testcase" throw ] when heap heap-push t 8 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 2 dup curmin < [ "bad testcase" throw ] when heap heap-push t 8 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 3 dup curmin < [ "bad testcase" throw ] when heap heap-push t 3 dup curmin < [ "bad testcase" throw ] when heap heap-push t 9 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 9 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 3 dup curmin < [ "bad testcase" throw ] when heap heap-push t 9 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 4 dup curmin < [ "bad testcase" throw ] when heap heap-push t 4 dup curmin < [ "bad testcase" throw ] when heap heap-push t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 4 dup curmin < [ "bad testcase" throw ] when heap heap-push t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 5 dup curmin < [ "bad testcase" throw ] when heap heap-push t 5 dup curmin < [ "bad testcase" throw ] when heap heap-push t 11 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 11 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 5 dup curmin < [ "bad testcase" throw ] when heap heap-push t 11 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 6 dup curmin < [ "bad testcase" throw ] when heap heap-push t 6 dup curmin < [ "bad testcase" throw ] when heap heap-push t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 6 dup curmin < [ "bad testcase" throw ] when heap heap-push t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 7 dup curmin < [ "bad testcase" throw ] when heap heap-push t 7 dup curmin < [ "bad testcase" throw ] when heap heap-push t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 8 dup curmin < [ "bad testcase" throw ] when heap heap-push t 8 dup curmin < [ "bad testcase" throw ] when heap heap-push t 8 dup curmin < [ "bad testcase" throw ] when heap heap-push t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 9 dup curmin < [ "bad testcase" throw ] when heap heap-push t 9 dup curmin < [ "bad testcase" throw ] when heap heap-push t 15 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 15 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 9 dup curmin < [ "bad testcase" throw ] when heap heap-push t 15 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push t 16 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push t 16 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push t 16 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 10 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 11 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 17 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 11 dup curmin < [ "bad testcase" throw ] when heap heap-push t 17 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 11 dup curmin < [ "bad testcase" throw ] when heap heap-push t 17 dup curmin < [ "bad testcase" throw ] when heap heap-push* :> D0 heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 17 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 11 dup curmin < [ "bad testcase" throw ] when heap heap-push t 17 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 18 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push t 18 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 18 dup curmin < [ "bad testcase" throw ] when heap heap-push* :> D1 heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push t 18 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop D0 heap heap-delete t 12 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push t 19 dup curmin < [ "bad testcase" throw ] when heap heap-push* :> D2 heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop D1 heap heap-delete t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push t 19 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push t 19 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push t 19 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push t 13 dup curmin < [ "bad testcase" throw ] when heap heap-push t 19 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop D2 heap heap-delete t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 20 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 20 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 20 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 20 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push heap heap-pop dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop t 14 dup curmin < [ "bad testcase" throw ] when heap heap-push t 20 dup curmin < [ "bad testcase" throw ] when heap heap-push heap [ dup curmin < [ pprint " << !!" print ] [ dup curmin! . ] if drop ] slurp-heap ;