Problem:
Score : 400 points

Problem Statement

Given is a string S consisting of digits from 1 through 9.

Find the number of pairs of integers (i,j) (1 ≤ i ≤ j ≤ |S|) that satisfy the following condition:

Condition: In base ten, the i-th through j-th characters of S form an integer that is a multiple of 2019.

Constraints

1 ≤ |S| ≤ 200000

S is a string consisting of digits from 1 through 9.

Input

Input is given from Standard Input in the following format:

S

Output

Print the number of pairs of integers (i,j) (1 ≤ i ≤ j ≤ |S|) that satisfy the condition.

Sample Input 1

1817181712114

Sample Output 1

3

Three pairs - (1,5), (5,9), and (9,13) - satisfy the condition.

Sample Input 2

14282668646

Sample Output 2

2

Sample Input 3

2119

Sample Output 3

0

No pairs satisfy the condition.

Solution in Julia (1.4.0) (judge verdict: Accepted)

const double = Float64
const int = Int64
const vint = Vector{int}
const vdouble = Vector{double}

#int(x) = parse(int,x)
parseint(x) = parse(int, x)
function readint()
  moji = readline(stdin)
  moji = split(moji)
  return map(parseint,moji)

end

function main()
  s = readline()

  N = length(s)
  D = Dict{int,int}()
  D[0] = 1
  
  mod = 0
  mod10 = 1
  for i in N:-1:1
    a = parse(int,s[i]) #int(s[i])

    mod = (mod + mod10 * a) %2019

    if get(D,mod,0)==0
      D[mod]=1
    else
      D[mod] +=1
    end
    
    mod10 = (mod10 * 10) %2019

  end

  sum = 0
  for (k,v) in D
    sum += v*(v-1)÷2
  end
  println(sum)  

end

main()