You are given set of n points in 5-dimensional space. The points are labeled from 1 to n. No two points coincide.

We will call point a bad if there are different points b and c, not equal to a, from the given set such that angle between vectors $\vec{ab}$ and $\vec{ac}$ is acute (i.e. strictly less than $90^{\circ}$). Otherwise, the point is called good.

The angle between vectors $\vec{x}$ and $\vec{y}$ in 5-dimensional space is defined as $\operatorname{arccos}(\frac{\vec{x} \cdot \vec{y}}{|\vec{x}||\vec{y}|})$, where $\vec{x} \cdot \vec{y} = x_{1} y_{1} + x_{2} y_{2} + x_{3} y_{3} + x_{4} y_{4} + x_{5} y_{5}$ is the scalar product and $|\vec{x}|= \sqrt{\vec{x} \cdot \vec{x}}$ is length of $\vec{x}$.

Given the list of points, print the indices of the good points in ascending order.


-----Input-----

The first line of input contains a single integer n (1 ≤ n ≤ 10^3) — the number of points.

The next n lines of input contain five integers a_{i}, b_{i}, c_{i}, d_{i}, e_{i} (|a_{i}|, |b_{i}|, |c_{i}|, |d_{i}|, |e_{i}| ≤ 10^3)  — the coordinates of the i-th point. All points are distinct.


-----Output-----

First, print a single integer k — the number of good points.

Then, print k integers, each on their own line — the indices of the good points in ascending order.


-----Examples-----
Input
6
0 0 0 0 0
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1

Output
1
1

Input
3
0 0 1 2 0
0 0 9 2 0
0 0 5 9 0

Output
0



-----Note-----

In the first sample, the first point forms exactly a $90^{\circ}$ angle with all other pairs of points, so it is good.

In the second sample, along the cd plane, we can see the points look as follows:

[Image]

We can see that all angles here are acute, so no points are good.

Difficulty: competition

Starter code:

Solutions:
n = int(input())
p = [tuple(map(int, input().split())) for i in range(n)]

def d(a, b):
    return (a[0]-b[0], a[1]-b[1], a[2]-b[2], a[3]-b[3], a[4]-b[4])

def m(a, b):
    t = 0
    for i in range(5):
        t += a[i] * b[i]
    return t

good_points = []
for i in range(n):
    good = True

    for j in range(n):
        if j == i:
            continue
        
        ab = d(p[j], p[i])

        for k in range(j + 1, n):
            if k == i:
                continue
            
            ac = d(p[k], p[i])
            
            if m(ab, ac) > 0:
                good = False
                break
        
        if not good:
            break
    
    if good:
        good_points.append(i)

print(len(good_points))
for i in good_points:
    print(i + 1)


n = int(input())
p = [tuple(map(int, input().split())) for i in range(n)]

def d(a, b):
    return tuple(x - y for x, y in zip(a, b))

def m(a, b):
    return sum(x * y for x, y in zip(a, b))

good_points = []
for i in range(n):
    good = True

    for j in range(n):
        if j == i:
            continue
        
        ab = d(p[j], p[i])

        for k in range(j + 1, n):
            if k == i:
                continue
            
            ac = d(p[k], p[i])
            
            if m(ab, ac) > 0:
                good = False
                break
        
        if not good:
            break
    
    if good:
        good_points.append(i)

print(len(good_points))
for i in good_points:
    print(i + 1)


d = lambda i, j, k: sum((a - c) * (b - c) for a, b, c in zip(p[i], p[j], p[k]))*(i!=j)
n = int(input())
r = range(n)
p = [list(map(int, input().split())) for i in r]
t = [k + 1 for k in r if all(d(i, j, k) <= 0 for i in r for j in r)] if n <12 else []
print(len(t))
for q in t: print(q)

d = lambda i, j, k: sum((a - c) * (b - c) for a, b, c in zip(p[i], p[j], p[k])) * (i != j)

n = int(input())

r = list(range(n))

p = [list(map(int, input().split())) for i in r]

t = [k + 1 for k in r if all(d(i, j, k) <= 0 for i in r for j in r)] if n < 12 else []

for q in [len(t)] + t: print(q)



# Made By Mostafa_Khaled


# Why do we fall ? So we can learn to pick ourselves up.

from math import acos

def check(i,j,k):
    num = 0
    for l in range(0,5):
        num += (points[j][l]-points[i][l])*(points[k][l]-points[i][l])
    return num > 0
n = int(input())
points = [[-1,-1,-1,-1,-1]]
ans = []
for _ in range(0,n):
    pts = [int(i) for i in input().split()]
    points.append(pts)
for i in range(1,n+1):
    put = True
    for j in range(1,n+1):
        if j != i and put:
            for k in range(1,n+1):
                if j != k:
                    if check(i,j,k):
                        put = False
                        break
            if not put:
                break
    if put:
        ans.append(i)
print(len(ans))
print(*ans)






"""

6
0 0 0 0 0
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1


3
0 0 1 2 0
0 0 9 2 0
0 0 5 9 0


"""

def check(a, b, c):
    s = 0
    for i in range(5):
        s += (b[i] - a[i]) * (c[i] - a[i])
    return s <= 0


n = int(input())
a = []
for i in range(n):
    a.append(list(map(int, input().split())))

if n == 1 or n == 2:
    print(n)
    print(1)
    if n == 2:
        print(2)
    return

v = -1
i = 0
while i + 1 < n:
    if v == -1:
        if i + 2 < n:
            if check(a[i], a[i + 1], a[i + 2]):
                v = i
            elif check(a[i + 1], a[i], a[i + 2]):
                v = i + 1
            elif check(a[i + 2], a[i], a[i + 1]):
                v = i + 2
        else:
            break
    else:
        if not check(a[v], a[i], a[i + 1]):
            if check(a[i], a[v], a[i + 1]):
                v = i
            elif check(a[i + 1], a[v], a[i]):
                v = i + 1
            else:
                v = -1
    i += 1

if v == -1:
    print(0)
    return

for i in range(n):
    if i == v:
        continue
    for j in range(i + 1, n):
        if j == v:
            continue
        if not check(a[v], a[i], a[j]):
            print(0)
            return

print(1)
print(v + 1)
return


from math import acos,sqrt,pi

def norm(x):
    if x==0:
        return 0
    else:
        return sqrt(scalar(x,x))

def scalar(x,y):
    return sum([x[i]*y[i] for i in range(5)])
def vector(p,q):
    return ([ (q[i]-p[i]) for i in range(5) ])

number=0
good_points=[]

n=int(input())
liste=[]
for _ in range(n):
    x=list(map(int,input().split(" ")))
    liste.append(x)

if n>11:
    print(0)
else:
    for i in range(n):
        bool=True
        for j in range(n):
            if j!=i:
                for k in range(n):
                    if k!=j and k!=i:
                        x=vector(liste[i],liste[j])
                        y=vector(liste[i],liste[k])
                        angle=acos(scalar(x,y)/norm(x)/norm(y))
                        if angle<pi/2:
                            bool=False
        if bool:
            good_points.append(i+1)
            number+=1
    if number>0:
        answer=str(number)+' '
        good_points.sort()
        for element in good_points:
            answer+='\n'+str(element)
        print(answer)
    else:
        print(0)