aboutsummaryrefslogtreecommitdiff
path: root/codeforces/BanBan/rust-solution/src/main.rs
blob: e1c0c5cbb4be6e2b91c91880385af6ac29c8c873 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
fn readi64(input : &mut dyn Iterator<Item = String>) -> i64 {
    input.next().unwrap().parse::<i64>().unwrap()
}



fn main() {
    let mut lines = std::io::stdin().lines().map(|line| line.unwrap());
    let tt = readi64(&mut lines);
    for _ in 0..tt {
        let n = readi64(&mut lines);
        if n == 1 {
            println!("{n}\n1 2\n");
        } else {
            println!("{}", n - 1);
            let mut v = Vec::with_capacity(n as usize);
            let mut cnt = 0;
            let mut i = 0;
            while cnt != n - 1 && i < n {
                if (3 * n - 1 - i) % 3 != 0 {
                    v[i as usize] = 3 * n - 1 - i;
                    cnt +=1;
                }
                i += 1;
            }
            for x in &v {
                println!("{} {}", i * 3 + 1, x);
            }
        }
    }
}