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 C (GCC 9.2.1) (judge verdict: Runtime Error)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define N 200000

int main(){
    char S[N+1];
    scanf("%s",S);

    long long count = 0;
    long long Slen = strlen(S);
    long long T[Slen+1];
    long long C[2019];
    for(int i = 0;i<2019;i++) C[i]=0;
    T[Slen]=0;
    
    for(int i = Slen-1;i>-1;i--) T[i] = (T[i+1] + (long long)pow(10,Slen-1-i)*(S[i]-'0')) % 2019;
    for(int i = 0;i<Slen+1;i++) C[T[i]]++;
    for(int i = 0;i<2019;i++) count+=(C[i]-1)*(C[i])/2.0;
    printf("%lld\n",count);
    return 0;
}