#![allow(unused_imports,non_snake_case,dead_code)] use std::{cmp::Reverse as Rev,ops::Range,collections::*,iter::*,mem::swap}; use proconio::{marker::*,*}; #[fastout] fn main(){ input!{ n:usize, } if n<=2{ println!("-1"); return; } let n2=n*n; let to=|x:usize|{ if x%n2==0{ n2 } else{ x%n2 } }; println!("{}",n*n*2); for i in 0..n{ for j in 0..n{ let u=i*n+j+1; println!("{} {}",u,to(u+n2-n)); println!("{} {}",u,to(u+n2-1)); } } }