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 Ruby (2.7.1) (judge verdict: Time Limit Exceeded)

s = gets.chop
n=s.length()
result=0
lookup = Array.new(100)
for i in 0..99 do
    i1 = i*2019
    lookup[i1%100]=i1
end
for j in 4..n do
    s1=s[0,j]
    x=s1.to_i
    sum=0
    while 2019<=x
        i1=x%100
        x=x-lookup[i1]
        if x%10000 == 0
            result += 1
            x=x/10000
        else
            x=x/100
        end
    end
end
puts result