let inline isOdd n = n&&&LanguagePrimitives.GenericOne=LanguagePrimitives.GenericOne let inline isGt0 n = n>LanguagePrimitives.GenericZero let inline rShift1 n = n>>>LanguagePrimitives.GenericOne let inline genPow m = let f n p r = if isOdd p then r*n%m else r let rec g n p r = if isGt0 p then g (n*n%m) (rShift1 p) (f n p r) else r fun n p -> g n p LanguagePrimitives.GenericOne let N,D = stdin.ReadLine()|>int64,1000000007L let pow = genPow D ((pow 10L N) * 4L % D - 1L) * (pow 3L (D-2L)) % D |> printfn "%d"