#!/usr/bin/perl
use 5.016;
use warnings;
no warnings qw(recursion);
use List::Util qw(reduce);

my @memo = (0, undef, undef, 0);

sub f { $memo[$_[0]] //= 1 + f($_[0] % 2 ? ($_[0] + 1) * 3 : $_[0] / 2) }

say reduce{ f($b) > f($a) ? $b : $a } (1 .. 10000);
