sub a{if(my$l=pop){a(@_[0,2,1],$l-1);print"Move disc $l from $_[0] to $_[2]
";a(@_[1,0,2],$l-1);}}a 'A'..'C',pop;
####
sub a{my$l=pop;a(@_[0,2,1],--$l)."Move disc $l from $_[0] to $_[2]
".a(@_[1,0,2],$l)if$l>0;}print a 'A'..'C',pop;
####
sub a{if(my$l=pop){a(@_[0,2,1],--$l);print"Move disc $l from $_[0] to $_[2]
";a(@_[1,0,2],$l);}}a 'A'..'C',pop;