Problem:
Score : 400 points

Problem Statement

Given is a string S. Each character in S is either a digit (0, ..., 9) or ?.

Among the integers obtained by replacing each occurrence of ? with a digit, how many have a remainder of 5 when divided by 13? An integer may begin with 0.

Since the answer can be enormous, print the count modulo 10^9+7.

Constraints

S is a string consisting of digits (0, ..., 9) and ?.

1 \leq |S| \leq 10^5

Input

Input is given from Standard Input in the following format:

S

Output

Print the number of integers satisfying the condition, modulo 10^9+7.

Sample Input 1

??2??5

Sample Output 1

768

For example, 482305, 002865, and 972665 satisfy the condition.

Sample Input 2

?44

Sample Output 2

1

Only 044 satisfies the condition.

Sample Input 3

7?4

Sample Output 3

0

We may not be able to produce an integer satisfying the condition.

Sample Input 4

?6?42???8??2??06243????9??3???7258??5??7???????774????4?1??17???9?5?70???76???

Sample Output 4

153716888

Solution in Julia (0.5.0) (judge verdict: Time Limit Exceeded)

parseInt(x) = parse(Int,x)

function main()
  S = chomp(readline())
  N = length(S)
  dp = zeros(Int, N,13)
  if S[N] != '?'
    s = parseInt(S[N])
    s != 0 ? dp[1,s] = 1 : dp[1,13] = 1
  else
    for j = 1:9
      dp[1,j] = 1
    end
    dp[1,13] = 1
  end
  p = zeros(Int, N)
  p[1] = 1
  for i = 2:N
    p[i] = rem(p[i-1]*10,13)
  end
  for i = 2:N
    N == 2 ? m = 1 : m = N-i+1
    for j = 1:13
      if S[m] != '?'
        s = parseInt(S[m])*p[i]
        rem(s+j,13) == 0 ? l = 13 : l = rem(s+j,13)
        dp[i,l] += dp[i-1,j]
        dp[i,l] = rem(dp[i,l],10^9+7)
      else
        for k = 0:9
          s = k*p[i]
          rem(s+j,13) == 0 ? l = 13 : l = rem(s+j,13)
          dp[i,l] += dp[i-1,j]
          dp[i,l] = rem(dp[i,l],10^9+7)
        end
      end
    end
  end
  println(dp[N,5])
end

main()