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 Perl (5.26.1) (judge verdict: Accepted)

my $s = <>;chomp $s;
my @num = split(//,$s);
my %m;
my $keta = 1;
$m{0} = 1;
my $cur = 0;
for (my $i=1;$i<=($#num+1);$i++) {
  my $t = $num[-$i];
  #print "$i $t cur$cur $keta\n";
  $cur = ($cur + $t * $keta) % 2019;
  $m{$cur}++;
  $keta = $keta * 10 % 2019;
}
my $ans = 0;; 
foreach my $k (keys %m){
  #print "$k $m{$k}\n";
  my $v = $m{$k};
  $ans += $v * ( $v - 1 ) / 2;
}
print  "$ans";