import numpy as np
import itertools

n = int(input())
ab = [input().split() for l in range(n)]
npab=np.array(ab, dtype='float64')

#print (n)
#print (npab)

nptable = np.zeros((n,n))
for i in range(0,n):
  for j in range(i+1,n):
    nptable[i,j]=npab[i,0]*npab[j,0]+npab[i,1]*npab[j,1]

#print (nptable)

count=n

for i in range(2,n+1):
  base = list(itertools.combinations(range(0,n),i))
#  print (base)

  for j in base:
    flag=1
    base2=list(itertools.combinations(j,2))
    for k in base2:
      if (nptable[k[0],k[1]] == 0 and flag == 1): flag=0
#      print (j, j[k],j[k+1], nptable[j[k],j[k+1]], flag)
#    if (nptable[j[0],j[ll-1]] == 0 and flag == 1): flag=0
        
    if (flag == 1): count=count+1
    
print (count % 1000000007)