#include <bits/stdc++.h>
const int MAX_LEN = 1010;
using namespace std;
template <typename U, typename V>
string to_string(pair<U, V>);
string to_string(const string& e_) { return "\"" + e_ + "\""; }
string to_string(char e_) { return "\'" + string(1, e_) + "\'"; }
string to_string(bool e_) { return e_ ? "true" : "false"; }
template <typename T>
string to_string(T e_) {
  string s_ = "[ ";
  for (const auto& x_ : e_) s_ += to_string(x_) + " ";
  return s_ + "]";
}
template <typename U, typename V>
string to_string(pair<U, V> e_) {
  return "(" + to_string(e_.first) + ", " + to_string(e_.second) + ")";
}
void dbg_str() { ; }
template <typename U, typename... V>
void dbg_str(U u, V... v) {
  ;
  dbg_str(v...);
}
long long int gcd(long long int a, long long int b) {
  return b == 0 ? a : gcd(b, a % b);
}
long long int lcm(long long int a, long long int b) {
  return a * (b / gcd(a, b));
}
int t, q;
long long int a, b, l, r;
int main() {
  scanf("%d", &t);
  while (t--) {
    scanf("%lld %lld", &a, &b);
    scanf("%d", &q);
    vector<long long int> till;
    long long int lc = lcm(a, b);
    till.assign(lc + 1, 0);
    till[0] = 0;
    for (int i = 1; i <= lc; i++) {
      till[i] = till[i - 1];
      if ((i % a) % b != (i % b) % a) till[i]++;
    }
    for (int i = 1; i <= lc; i++)
      ;
    while (q--) {
      long long int ans = 0;
      scanf("%lld %lld", &l, &r);
      l--;
      long long int left = (l / lc) * till[lc] + till[l % lc];
      long long int right = (r / lc) * till[lc] + till[r % lc];
      printf("%lld ", right - left);
    }
    printf("\n");
  }
}
