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