Problem:
Max Score: $250$ Points

Problem Statement

Snuke has a very long calendar. It has a grid with $n$ rows and $7$ columns. One day, he noticed that calendar has a following regularity.

The cell at the $i$-th row and $j$-th column contains the integer $7i+j-7$.

A good sub-grid is a $3 \times 3$ sub-grid and the sum of integers in this sub-grid mod $11$ is $k$.

How many good sub-grid are there? Write a program and help him.

Input

The input is given from standard input in the following format.

$n \quad k$

Output

Print the number of good sub-grid. If there are no solution exists, print 0.

Constraints

$1 \le n \le 10^9$

$0 \le k \le 10$

Subtasks

Subtask 1 [ $150$ points ]

The testcase in the subtask satisfies $1 \le n \le 100$.

Subtask 2 [ $100$ points ]

There are no additional constraints.

Sample Input 1

7 7

Sample Output 1

2

In this case, the calendar likes this matrix.

Sun.

Mon.

Tue.

Wed.

Thu.

Fri.

Sat.

Week 1

1

2

3

4

5

6

7

Week 2

8

9

10

11

12

13

14

Week 3

15

16

17

18

19

20

21

Week 4

22

23

24

25

26

27

28

Week 5

29

30

31

32

33

34

35

Week 6

36

37

38

39

40

41

42

Week 7

43

44

45

46

47

48

49

The cell at $i$-th row and $j$-th column is denoted $(i, j)$.

If upper-left is $(1, 5)$, the sum of integers is $5+6+7+12+13+14+19+20+21=117$.

If upper-left is $(3, 2)$, the sum of integers is $16+17+18+23+24+25+30+31+32=216$.

Therefore, there are 2 good sub-grids.

Sample Input 2

6 0

Sample Output 2

2

If upper-left is $(1, 3)$ or $(4, 4)$, it is a good sub-grid.

Sample Input 3

18 10

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#pragma once
#include<stdio.h>

long dan,amari;
long result=0;
bool find = false;
long tate=1;
long yoko=2;
long start[2]={};
long a[2]={};
long aida=0;

int main(){

	scanf("%d",&dan);
	scanf("%d",&amari);
	dan--;

	if(dan>=3){
		while(find == false){
			if((tate*7+yoko)*9 % 11 == amari){
				start[0]=tate;
				start[1]=yoko;
				find=true;
			}
			else{
				yoko++;
				if(yoko%7 == 0 || yoko%7==1){
					tate++;
					yoko=2;
					if(tate>=dan){
						break;
					}
				}

			}


		}

		for(int i=1;i<=7;i++){
			if((start[1] + i*4)%7 == 0){
				a[0]=i;
			}
			if((start[1] + i*4)%7 == 1){
				a[1]=i;
			}
		}


		if(find ==true){
			aida = dan*7-8-(start[0]*7+start[1]);
			result = (aida/77)*5+1;
			result+= (aida%77)/11;

			if(aida%77>=11*a[0]){
				result--;
			}

			if(aida%77>=11*a[1]){
				result--;
			}
		}

	}


	printf("%ld\n",result);

return 0;
}