#D2016. Symmetric Projections

    ID: 1676 Type: Default 2000ms 256MiB

Symmetric Projections

Symmetric Projections

You are given a set of n points on the plane. A line containing the origin is called good, if projection of the given set to this line forms a symmetric multiset of points. Find the total number of good lines.

Multiset is a set where equal elements are allowed.

Multiset is called symmetric, if there is a point P on the plane such that the multiset is centrally symmetric in respect of point P.

Input

The first line contains a single integer n (1 ≤ n ≤ 2000) — the number of points in the set.

Each of the next n lines contains two integers xi and yi ( - 106 ≤ xi, yi ≤ 106) — the coordinates of the points. It is guaranteed that no two points coincide.

Output

If there are infinitely many good lines, print -1.

Otherwise, print single integer — the number of good lines.

Examples

Input

3 1 2 2 1 3 3

Output

3

Input

2 4 3 1 2

Output

-1

Note

Picture to the first sample test:

In the second sample, any line containing the origin is good.

inputFormat

Input

The first line contains a single integer n (1 ≤ n ≤ 2000) — the number of points in the set.

Each of the next n lines contains two integers xi and yi ( - 106 ≤ xi, yi ≤ 106) — the coordinates of the points. It is guaranteed that no two points coincide.

outputFormat

Output

If there are infinitely many good lines, print -1.

Otherwise, print single integer — the number of good lines.

Examples

Input

3 1 2 2 1 3 3

Output

3

Input

2 4 3 1 2

Output

-1

Note

Picture to the first sample test:

In the second sample, any line containing the origin is good.

样例

3
1 2
2 1
3 3
3

</p>