N = int(input())
S = []; T = []; R = []
for i in range(N):
r, sx, sy, tx, ty = map(int, input().split())
S.append((sx, sy))
T.append((tx, ty))
R.append(r)
def dot(s, t, u):
sx, sy = s
tx, ty = t
ux, uy = u
return (tx - sx)*(ux - sx) + (ty - sy)*(uy - sy)
def cross(s, t, u):
sx, sy = s
tx, ty = t
ux, uy = u
return (tx - sx)*(uy - sy) - (ux - sx)*(ty - sy)
def dist2(s, t):
sx, sy = s
tx, ty = t
return (sx - tx)**2 + (sy - ty)**2
def check(r, s, t, r0, u):
rr = (r + r0)**2
if not dist2(s, u) > rr < dist2(t, u):
return 1
dd = dist2(s, t)
if not 0 <= dot(s, t, u) <= dd:
return 0
if not (cross(s, t, u))**2 <= dd*rr:
return 0
return 1
memo = {0: 0}
def dfs(state):
if state in memo:
return memo[state]
res = 0
for i in range(N):
if (state >> i) & 1 == 0:
continue
s = S[i]; t = T[i]; r = R[i]
for j in range(N):
if i == j:
continue
r0 = R[j]
u = S[j] if (state >> j) & 1 else T[j]
if check(r, s, t, r0, u):
break
else:
res = max(res, dfs(state ^ (1 << i)) + 1)
memo[state] = res
return res
print(dfs(2**N - 1))