parameter nat;
storage (pair (option nat) (contract (or nat (pair signature nat)) bool));
return (pair nat bool);
code { DUP; CAR; DIP{CDDR; DUP}; DUP; DIP{SOME; PAIR; SWAP}; # Store the nat in strorage
       # Query our stored contract
       LEFT (pair signature nat); DIP{PUSH tez "0.00"}; TRANSFER_TOKENS;
       # Cleanup and finish
       DIP{DUP; CAR}; DIP{IF_NONE {FAIL} {}}; SWAP;
       PAIR; DIP{CDR; NONE nat; PAIR}; PAIR}