sub f{($m,$n)=@_; ($a,$b)=(1,0); for($s=64;$s--;){ ($a,$b)=( ($a*$a+$b*$b)%$m, (2*$a-$b)*$b%$m ); ($a,$b)=( ($a+$b)%$m,$a )if$n>>$s&1 } $b } print f 1e9+7,f 2e9+16,<>