>>454 Perl5、>>494 を動的計画法で解くように改良(但し再帰呼び出しを使っているので10^5など規模が大きい問題を解くなら下から上に計算してくる単純ループに書き換えた方が良い)

no warnings 'experimental';
use feature qw{signatures say};
$T = <>;
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<>;
use List::Util 'max';
sub f($t, $i) {
 my $s = 0;
 if (0 < $i and $i < 11) {
  return $m[$t][$i] if defined $m[$t][$i];
  $s++ if grep{$_ == $i} @{$p{$t}};
  $s += max(f($t+1, $i-1), f($t+1, $i), f($t+1, $i+1))
   if $t < $T;
  $m[$t][$i] = $s;
 }
 $s
}
say f(0, 1);