5 use experimental 'multidimensional';
6 use List::Util qw(reduce);
10 my (@queues, @ops, @divs, @ift, @iff, @steps);
13 my @lines = split /\n/;
14 push @queues, [ $lines[1] =~ /\d+/g ];
15 my ($op) = $lines[2] =~ /= (.*)/;
18 push @divs, $lines[3] =~ /(\d+)/;
19 push @ift, $lines[4] =~ /(\d+)/;
20 push @iff, $lines[5] =~ /(\d+)/;
23 my $mod = reduce { $a*$b } @divs;
26 for my $mk (0 .. $#queues) {
28 while (my $old = shift @$q) {
30 $old = eval $ops[$mk];
32 if ($old % $divs[$mk]) {
33 push @{ $queues[$iff[$mk]] }, $old;
35 push @{ $queues[$ift[$mk]] }, $old;
41 @steps = sort { $b <=> $a } @steps;
43 say $steps[0] * $steps[1];