storage unit ;
parameter (pair nat nat) ;
code { CAR ; UNPAIR ;
       DUP ;
       PUSH nat 1 ;
       IFCMPGE
         { DROP ; DROP ; UNIT ; NIL operation ; PAIR }
         { PUSH nat 1 ; SWAP ; SUB @parameter ; ISNAT ;
           IF_NONE
             { DROP ; UNIT ; NIL operation ; PAIR }
             { DUP ; DIP { PUSH nat 1 ; ADD ; MUL @storage } ; PAIR ;
               DIP { SELF; PUSH tez "0" } ;
               TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS ;
               UNIT ; SWAP ; PAIR } } }