fn main() { let mut xx = String::new(); std::io::Read::read_to_string(&mut std::io::stdin(), &mut xx).ok(); let xx: Vec = xx.split_whitespace().skip(1).flat_map(str::parse).collect(); let pp: Vec<(i64, i64)> = xx.chunks(2).map(|x| (x[0], x[1])).collect(); let mut max = 0; for &(x1, y1) in &pp { for &(x2, y2) in &pp { if (x1, y1) >= (x2, y2) { continue; } let n = pp .iter() .filter(|&&(x, y)| (x2 - x1) * (y - y1) == (y2 - y1) * (x - x1)) .count(); max = max.max(n); } } println!("{max}"); }