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: Time Limit Exceeded)

use strict;
use warnings;
use utf8;
use feature qw/say/;


sub main {
    my $s = <STDIN>;
    chomp($s);
    
    if (length($s) <= 3) {
        say 0;
    } else {
        say calc($s);
    }
}

sub calc {
    my ($s) = @_;

    my $cnt = 0;
    for my $i (1..length($s)) {
        for my $j (4..(length($s)-$i+1)) {
            my $target = substr($s, $i-1, $j);
            next unless _sum($target)%3 == 0;
            next unless int($target)%673 == 0;
            $cnt++ if int($target)%2019 == 0;
        }       
    }
    return $cnt;
}

sub _sum {
    my $s = shift;
    my $tot;
    for (split(//, $s)) {
        $tot += int($_);
    }
    return $tot;
}

main();