# 因为可旋转、可平移的缘故,可用怪物所在三个点构建一个新的坐标系,判断其他点是否在这个坐标系内即可 # 记录各个坐标系构建方式中可以包含最多的点 # 2条直线y=a1x+b1,y=a2x+b2垂直还是平行,取决于x的系数。若a1=12,则平行,若a1与a2互为负倒数,则垂直。 # 其中x的系数a=(x1-x2)/(y1-y2),(x1,y1)和(x2,y2)为直线y=ax+b所经过的2个点 n=int(input()) x=list(map(int,input().split())) y=list(map(int,input().split())) if n<=3: print(n) else: ans=0 # 用于记录各个坐标系构建方式中可以包含最多的点 for i in range(n-3): # 第一个点 for j in range(i+1,n-2): # 第二个点 x12=x[i]-x[j] y12=y[i]-y[j] for k in range(i+2,n-1): # 第三个点 if k!=j: count=3 # 前3个点构建成坐标系,那么前3个点必然是在该坐标系上的 for l in range(i+3,n): # 第四个点,需判断该点是否在前3个点构建的坐标系上 if l!=k and l!=j: x34 = x[k]-x[l] y34 = y[k]-y[l] x14 = x[i]-x[l] y14 = y[i]-y[l] # x12/y12=-(y34/x34),x的系数互为负倒数,则垂直。避免0除异常,写成乘法形式x12*x34==-y12*y34 # x14/y14=x12/y12,x的系数相等,则平行,又经过同一点,则重合。避免0除异常,写成乘法形式x14*y12==x12*y14 if x12*x34==-y12*y34 or x14*y12==x12*y14: # 直线34垂直于12,或者直线14与12重合,则该点在前3个点构建的坐标系上 count+=1 ans=max(ans,count) print(ans)