from collections import defaultdict def square_dist(A,B): return (A[0]-B[0])**2 + (A[1]-B[1])**2 # Přečteme vstup. N = int( input() ) rybnik = [ tuple( int(x) for x in input().split() ) for n in range(N) ] # Vygenerujeme všechny možné skoky, roztřídíme je podle délky, délky uspořádáme. skoky = defaultdict(list) # pro každou délku seznam skoků for a in range(N): for b in range(N): if a != b: d = square_dist( rybnik[a], rybnik[b] ) skoky[d].append( (a,b) ) delky = reversed( sorted( skoky.keys() ) ) # Postupně procházíme délky a počítáme, kam se dokážeme dostat na kolik skoků. nejvic = [ -2**30 for n in range(N) ] nejvic[0] = 0 for d in delky: # Ze starých informací vypočítáme nové. nove_info = [] for a,b in skoky[d]: nove_info.append( ( b, nejvic[a]+1 ) ) # Zapíšeme ty nové údaje, které jsou lepší než staré. for b,s in nove_info: nejvic[b] = max( nejvic[b], s ) print( nejvic[N-1] )