Interestingly, the solutions I've written using lists always seem to wind up smaller than the ones with strings.
#!perl -l $n=pop;@l=@a=@ARGV;$i=0until(@l=map{($a[$i++&1])x$_}@l)>$n;print@l[0..--$n]