#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion static T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); static long Sqrt(long x, long max) { var pass = 0L; var fail = max; while (fail - pass > 1) { var middle = (fail + pass) >> 1; var next = middle * middle; if (next <= x) pass = middle; else fail = middle; } return pass; } const int M = 1000000; const int B = 1000; var qz = Range(I(), () => (I(), I(), I())); var s = new bool[M + 1]; var bz = new int[B]; var dlz = new List[M + 1]; List DL(int i) { if (dlz[i] != null) return dlz[i]; var dl = new List(); var sq = (int)Sqrt(i, M); for (var j = 1; j <= sq; j++) { var p = i / j; if (p > sq) dl.Add(p); } return dlz[i] = dl; } var ans = new List(); foreach (var (n, l, r) in qz) { var sq = Sqrt(n, M); for (var i = 1; i <= sq; i++) { var f = s[i]; if (f) bz[0]--; else bz[0]++; s[i] = !f; } var dl = DL(n); foreach (var v in dl) { var bi = (v - 1) / B; var f = s[v]; if (f) bz[bi]--; else bz[bi]++; s[v] = !f; } var qns = 0; { var i = l; while (i <= r) { var (ip, iq) = int.DivRem(i - 1, B); if (iq == 0 && l + B <= r) { qns += bz[ip]; i += B; continue; } if (s[i]) qns++; i++; } } ans.Add(qns); } Console.WriteLine(string.Join(Environment.NewLine, ans));