import sys
from collections import Counter
def main():
# Чтение всех входных данных из стандартного потока
input_data = sys.stdin.read().split()
if not input_data:
return
n = int(input_data[0])
# Словари для подсчета точек на прямых, параллельных осям X, Y и Z
lines_x = Counter() # Ключ: (y, z)
lines_y = Counter() # Ключ: (x, z)
lines_z = Counter() # Ключ: (x, y)
idx = 1
for _ in range(n):
x = int(input_data[idx])
y = int(input_data[idx+1])
z = int(input_data[idx+2])
idx += 3
lines_x[(y, z)] += 1
lines_y[(x, z)] += 1
lines_z[(x, y)] += 1
# Изначально любое подмножество из 1 точки всегда согласовано
max_subset = 1
if lines_x:
max_subset = max(max_subset, max(lines_x.values()))
if lines_y:
max_subset = max(max_subset, max(lines_y.values()))
if lines_z:
max_subset = max(max_subset, max(lines_z.values()))
print(max_subset)
if __name__ == '__main__':
main()
import sys
def main():
# Чтение всех данных из стандартного ввода
input_data = sys.stdin.read().split()
if not input_data:
return
n = int(input_data[0])
# Исходный массив A и целевой массив B
# Индексы в input_data:
# A занимает от 1 до n, B занимает от n + 1 до 2*n
prev_d = 0
total_operations = 0
for i in range(n):
a = int(input_data[1 + i])
b = int(input_data[1 + n + i])
d = b - a
# Если целевое значение меньше исходного, решение невозможно
if d < 0:
print("NO SOLUTION")
return
# Если разность увеличилась по сравнению с предыдущим шагом
if d > prev_d:
total_operations += (d - prev_d)
prev_d = d
print(total_operations)
if __name__ == '__main__':
main()