fn main() { let n = 1_000_000; // (1e9, 0) -> ... -> (0, 1e9) -> ... -> (-1e9, 0) -> ... -> (0, -1e9) // (1000000 - 4) / 4 = 249999 let mut points_1 = Vec::new(); let (mut x, mut y) = (1_000_000_000_i64, 0); for _ in 0..(n - 4) / 4 { x -= 1; y += 2; points_1.push((x, y)); } let mut points_2 = Vec::new(); let (mut x, mut y) = (0, 1_000_000_000_i64); for _ in 0..(n - 4) / 4 { x -= 2; y -= 1; points_2.push((x, y)); } let mut points_3 = Vec::new(); let (mut x, mut y) = (-1_000_000_000_i64, 0); for _ in 0..(n - 4) / 4 { x += 1; y -= 2; points_3.push((x, y)); } let mut points_4 = Vec::new(); let (mut x, mut y) = (0, -1_000_000_000_i64); for _ in 0..(n - 4) / 4 { x += 2; y += 1; points_4.push((x, y)); } let mut ans = Vec::new(); ans.push((1_000_000_000_i64, 0)); ans.extend(points_1); ans.push((0, 1_000_000_000_i64)); ans.extend(points_2); ans.push((-1_000_000_000_i64, 0)); ans.extend(points_3); ans.push((0, -1_000_000_000_i64)); ans.extend(points_4); assert_eq!(ans.len(), n); println!("{}", n); for (x, y) in ans { assert!(-1_000_000_000 <= x && x <= 1_000_000_000); assert!(-1_000_000_000 <= y && y <= 1_000_000_000); println!("{} {}", x, y); } }