use List::Util 'sum'; sub X{for$c(sort@_){@r=map{$_,[@$_,$c]}@r,[]}grep{!$f{"@$_"}++&&10==sum@$_}@r} use Data::Dumper; @r=X(1,3,4,5,3,3,7,2,7,10); $_=Dumper(\@r); s/\s+//g; print