// ChatGPTにより変換 use std::io::{self, Read}; const LEN: usize = 1 << 20; fn update(bit: &mut Vec, mut v: usize, w: i32) { while v <= LEN { bit[v] += w; v += v & (!v + 1); // lowbit } } fn getvalue(bit: &Vec, mut v: usize) -> i32 { let mut ans = 0; while v != 0 { ans += bit[v]; v -= v & (!v + 1); // lowbit } ans } fn main() { let mut input = String::new(); io::stdin().read_to_string(&mut input).unwrap(); let mut it = input.split_whitespace(); let q: usize = it.next().unwrap().parse().unwrap(); let mut a = vec![0i32; LEN + 1]; let mut bit = vec![0i32; LEN + 1]; let mut out = String::new(); for _ in 0..q { let i: usize = it.next().unwrap().parse().unwrap(); let l: usize = it.next().unwrap().parse().unwrap(); let r: usize = it.next().unwrap().parse().unwrap(); let mut j = 1usize; while j * j <= i { let k = i / j; if a[k] == 0 { a[k] = 1; update(&mut bit, k, 1); } else { a[k] = 0; update(&mut bit, k, -1); } j += 1; } let lim = i / j; for k in 1..=lim { if a[k] == 0 { a[k] = 1; update(&mut bit, k, 1); } else { a[k] = 0; update(&mut bit, k, -1); } } let ans = getvalue(&bit, r) - getvalue(&bit, l - 1); out.push_str(&format!("{}\n", ans)); } print!("{}", out); }