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.chomp
n = s.size
a = []
for i in 0..(n-1)
  a << (s.slice(i..(n-1)).to_i)%2019
end
a << 0
a.sort!
ans = 0
y = 1
m = a.size
while true
  if m < 2
    ans += y*(y-1)/2
    break
  elsif a[0] == a[1]
    y += 1
    a.shift
    m -= 1
  else
    ans += y*(y-1)/2
    m -= 1
    y = 1
    a.shift
  end
end
puts ans