### Problem Statement

A triangle is called isosceles if it has two sides of equal length. Two triangles are considered to be different if they have different sets of vertices. You have a grid of N x M square cells. Return the number of different isosceles triangles you can form using only the centers of grid cells as vertices.

### Definition

 Class: IsoscelesTriangles Method: count Parameters: int, int Returns: long Method signature: long count(int N, int M) (be sure your method is public)

### Constraints

-N will be between 1 and 200, inclusive.
-M will be between 1 and 200, inclusive.

### Examples

0)

 `1` `10`
`Returns: 0`
 Any three centers of grid cells will lie on the same straight line, so it's impossible to form a triangle at all.
1)

 `2` `2`
`Returns: 4`
 We can select 4 triples of centers of grid cells, and all these triples will form isosceles triangles.
2)

 `2` `3`
`Returns: 10`
 All 10 isosceles triangles for a 2x3 grid are listed below ('X' stands for a triangle vertex): ```XX. XX. .X. X.. X.X X.. .X. XX. XX. .X. .XX .XX ..X .X. .X. .X. ..X .XX .XX X.X ```
3)

 `5` `4`
`Returns: 248`

#### Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=8043

#### Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=12016&pm=8043

ivan_metelsky

#### Testers:

PabloGilberto , SnapDragon , Olexiy , Mike Mirzayanov

#### Problem categories:

Brute Force, Simple Math