You are given two integers a and b, and q queries. The i-th query consists of two numbers l_i and r_i, and the answer to it is the number of integers x such that l_i ≤ x ≤ r_i, and ((x mod a) mod b) ≠ ((x mod b) mod a). Calculate the answer for each query.

Recall that y mod z is the remainder of the division of y by z. For example, 5 mod 3 = 2, 7 mod 8 = 7, 9 mod 4 = 1, 9 mod 9 = 0.

Input

The first line contains one integer t (1 ≤ t ≤ 100) — the number of test cases. Then the test cases follow.

The first line of each test case contains three integers a, b and q (1 ≤ a, b ≤ 200; 1 ≤ q ≤ 500).

Then q lines follow, each containing two integers l_i and r_i (1 ≤ l_i ≤ r_i ≤ 10^{18}) for the corresponding query.

Output

For each test case, print q integers — the answers to the queries of this test case in the order they appear.

Example

Input


2
4 6 5
1 1
1 3
1 5
1 7
1 9
7 10 2
7 8
100 200


Output


0 0 0 2 4 
0 91 
from collections import Counter, OrderedDict
from itertools import permutations as perm
from collections import deque
from sys import stdin
from bisect import *
from heapq import *
import math

g   = lambda : stdin.readline().strip()
gl  = lambda : g().split()
gil = lambda : [int(var) for var in gl()]
gfl = lambda : [float(var) for var in gl()]
gcl = lambda : list(g())
gbs = lambda : [int(var) for var in g()]
mod = int(1e9)+7
inf = float("inf")


def getVal(x, a, b):
	return 1 if (x%a)%b != (x%b)%a else 0


t, = gil()
for _ in range(t):
	a, b, q = gil()
	a, b = max(a, b), min(a, b)
	n = a*b; base = [0]*n
	base[0] = getVal(0, a, b)
	for i in range(1, n):
		base[i] += base[i-1] + getVal(i, a, b)
	base.append(0)
	for _ in range(q):
		l, r = gil()
		if a==b or r < a:
			print(0, end=" ")
		else:
			ans = 0
			ans += base[r%n]
			ans -= base[l%n - 1	]
			ans += base[-2]*((r-(r%n)-l+(l%n)+1)//n)
			print(ans, end=" ")
	print()