use utf8; use strict; use warnings; use List::Util qw/reduce/; my ($n, $w) = split / /, <>; my @a = split / /, <>; my %visited; for (my $bit = 0; $bit < 3**$n; $bit++) { my $sum = 0; my $x = $bit; my $key = 0; for (my $i = 0; $i < $n; $i++) { my $y = $x % 3; $x /= 3; $sum += $a[$i] if ($y == 1); $sum += $a[$i]/2 if ($y == 2); $key |= 1 << $i if ($y != 0); } $visited{$key} = 1 if ($sum == $w); } my $ans = keys %visited; print "$ans\n";