Kinda easy, though I still don't understand how I happened to make it work ("unless" and "and" priorities were fun to test) :D
sub f{ $_="Adrien, Benjamin, Philippe"; ${$_}=shift@_ for(m/\b(\w)/g); $B unless$P and f($B,$B+$A,$P><DATA>?$P-$.:$?,); } print f($|++,<DATA>,shift@ARGV),"\n"; __DATA__ 1
run it with a numerical argument.

P!

Are the monkeys gone yet?