Problem Statement
There is an infinitely large board which is divided into 1 x 1 cells. The board has a coordinate system in which the x-coordinate (the first coordinate) increases from left to right, while the y-coordinate (the second coordinate) increases from bottom to top. Taro initially places the die on the cell with coordinates (0, 0). The die shows '1' on the top face, '2' on the front face, and '3' on the left face (so the bottom face shows '6', the back face shows '5', and the right face shows '4').
Taro wants to move this die to cell (goalx, goaly) by performing a sequence of rotations. There are two ways to rotate the die:
- Rotate toward the right. This operation moves the die from cell (x, y) to cell (x+1, y).
- Rotate toward the top. This operation moves the die from cell (x, y) to cell (x, y+1).

Return the number of sequences of rotations which move the die to cell (goalx, goaly), such that the following conditions are satisfied:
- The die must show '1' again on the top face when it reaches (goalx, goaly).
- The die must not show '1' on the top face before it reaches (goalx, goaly).
Definition
- Class:
- DiceRotation
- Method:
- theCount
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int theCount(int goalx, int goaly)
- (be sure your method is public)
Notes
- The answer will always fit in a signed 32-bit integer.
Constraints
- goalx will be between 1 and 1,000,000,000, inclusive.
- goaly will be between 1 and 1,000,000,000, inclusive.
Examples
2
2
Returns: 2
There are two ways to move the die to cell (2,2) that satisfy the conditions: right -> right -> up -> up up -> up -> right -> right
5
8
Returns: 2
47
58
Returns: 2
489
489
Returns: 2
1000000000
1000000000
Returns: 2
4
4
Returns: 12
4
1000000000
Returns: 1000000003
1
1
Returns: 0
1
2
Returns: 0
1
3
Returns: 0
1
4
Returns: 2
2
1
Returns: 0
2
3
Returns: 2
2
4
Returns: 5
3
1
Returns: 0
3
2
Returns: 2
3
3
Returns: 2
3
4
Returns: 6
4
1
Returns: 2
4
2
Returns: 5
4
3
Returns: 6
1
1000000000
Returns: 0
2
1000000000
Returns: 2
3
1000000000
Returns: 2
4
1000000000
Returns: 1000000003
5
1000000000
Returns: 2
1
21861532
Returns: 0
1
84
Returns: 0
8690127
1
Returns: 0
14672330
1
Returns: 0
2
15883626
Returns: 2
2
1386936
Returns: 2
1087700
2
Returns: 2
45049380
2
Returns: 2
3
31
Returns: 2
3
72
Returns: 2
88497419
3
Returns: 2
171051902
3
Returns: 2
4
280080348
Returns: 280080351
4
2050964
Returns: 2050967
20032
4
Returns: 20035
2916
4
Returns: 2919
933890
4
Returns: 933893
4791339
4
Returns: 4791342
5
1
Returns: 0
5
2
Returns: 2
5
3
Returns: 2
5
4
Returns: 8
5
5
Returns: 2
21861532
84
Returns: 2
8690127
14672330
Returns: 2
15883626
1386936
Returns: 2
1087700
45049380
Returns: 2
31
72
Returns: 2
88497419
171051902
Returns: 2
20032
2916
Returns: 2
933890
4791339
Returns: 2
119187
26
Returns: 2
112984
1392043
Returns: 2
280
941150
Returns: 2
25390
146711
Returns: 2
4
2247417
Returns: 2247420
1000000000
4
Returns: 1000000003
4
25
Returns: 28
100000
4
Returns: 100003
4
10000
Returns: 10003
4
5
Returns: 8
1000000
4
Returns: 1000003
100
4
Returns: 103
4
1000000
Returns: 1000003
4
10
Returns: 13
4
7
Returns: 10
99999
4
Returns: 100002
100000000
100000000
Returns: 2
1
100
Returns: 0
4
1000
Returns: 1003
4
50
Returns: 53
4
16
Returns: 19
1000
4
Returns: 1003
4
9999
Returns: 10002
4
49
Returns: 52
4
100
Returns: 103
4
230
Returns: 233
1
1000
Returns: 0
1
80000
Returns: 0
123
4
Returns: 126
1
10
Returns: 0
4
400
Returns: 403