def read_data(): N = int(input()) xyz = [] for _ in range(N): x, y, z = map(int, input().split()) xyz.append(x*10**16 + y*10**8 + z) xyz.append(x*10**16 + z*10**8 + y) xyz.append(y*10**16 + x*10**8 + z) xyz.append(y*10**16 + z*10**8 + x) xyz.append(z*10**16 + x*10**8 + y) xyz.append(z*10**16 + y*10**8 + x) return N, xyz def solve(N, xyz): xyz.append(0) xyz.sort() dp = [0] * (N * 6 + 1) for idx, val in enumerate(xyz): tmp = 0 for idx2, val2 in enumerate(xyz[:idx]): if val2 < val and tmp < dp[idx2]: tmp = dp[idx2] dp[idx] = tmp + 1 return max(dp) - 1 N, xyz = read_data() print(solve(N, xyz))