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;
dXNlIExpc3Q6OlV0aWwgJ3N1bSc7CgpzdWIgWHtmb3IkYyhzb3J0QF8pe0ByPW1hcHskXyxbQCRfLCRjXX1AcixbXX1ncmVweyEkZnsiQCRfIn0rKyYmMTA9PXN1bUAkX31Acn0KCnVzZSBEYXRhOjpEdW1wZXI7CkByPVgoMSwzLDQsNSwzLDMsNywyLDcsMTApOwokXz1EdW1wZXIoXEByKTsKcy9ccysvL2c7CnByaW50
$VAR1=[[3,7],[3,3,4],[2,3,5],[10],[1,4,5],[1,3,3,3],[1,2,7],[1,2,3,4]];