#include <bits/stdc++.h>
using namespace std;
const int INT_INF = 2e9;
const long long LL_INF = 1e18;
const long double PI = acos(long double(-1));
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
template <class T>
bool ckmin(T& a, const T& b) {
  return a > b ? a = b, 1 : 0;
}
template <class T>
bool ckmax(T& a, const T& b) {
  return a < b ? a = b, 1 : 0;
}
namespace input {
template <class T>
void re(complex<T>& x);
template <class T1, class T2>
void re(pair<T1, T2>& p);
template <class T>
void re(vector<T>& a);
template <class T, size_t SZ>
void re(array<T, SZ>& a);
template <class T>
void re(T& x) {
  cin >> x;
}
void re(double& x) {
  string t;
  re(t);
  x = stod(t);
}
void re(long double& x) {
  string t;
  re(t);
  x = stold(t);
}
template <class T, class... Ts>
void re(T& t, Ts&... ts) {
  re(t);
  re(ts...);
}
template <class T>
void re(complex<T>& x) {
  T a, b;
  re(a, b);
  x = {a, b};
}
template <class T1, class T2>
void re(pair<T1, T2>& p) {
  re(p.f, p.s);
}
template <class T>
void re(vector<T>& a) {
  for (int i = (0); i <= ((int)a.size() - 1); ++i) re(a[i]);
}
template <class T, size_t SZ>
void re(array<T, SZ>& a) {
  for (int i = (0); i <= (SZ - 1); ++i) re(a[i]);
}
}  // namespace input
using namespace input;
namespace output {
void pr(int x) { cout << x; }
void pr(long x) { cout << x; }
void pr(long long x) { cout << x; }
void pr(unsigned x) { cout << x; }
void pr(unsigned long x) { cout << x; }
void pr(unsigned long long x) { cout << x; }
void pr(float x) { cout << x; }
void pr(double x) { cout << x; }
void pr(long double x) { cout << x; }
void pr(char x) { cout << x; }
void pr(const char* x) { cout << x; }
void pr(const string& x) { cout << x; }
void pr(bool x) { pr(x ? "true" : "false"); }
template <class T>
void pr(const complex<T>& x) {
  cout << x;
}
template <class T1, class T2>
void pr(const pair<T1, T2>& x);
template <class T>
void pr(const T& x);
template <class T, class... Ts>
void pr(const T& t, const Ts&... ts) {
  pr(t);
  pr(ts...);
}
template <class T1, class T2>
void pr(const pair<T1, T2>& x) {
  pr("{", x.f, ", ", x.s, "}");
}
template <class T>
void pr(const T& x) {
  pr("{");
  bool fst = 1;
  for (const auto& a : x) pr(!fst ? ", " : "", a), fst = 0;
  pr("}");
}
void ps() { pr("\n"); }
template <class T, class... Ts>
void ps(const T& t, const Ts&... ts) {
  pr(t);
  if (sizeof...(ts)) pr(" ");
  ps(ts...);
}
void pc() { pr("]\n"); }
template <class T, class... Ts>
void pc(const T& t, const Ts&... ts) {
  pr(t);
  if (sizeof...(ts)) pr(", ");
  pc(ts...);
}
}  // namespace output
using namespace output;
namespace io {
void setIn(string s) { freopen(s.c_str(), "r", stdin); }
void setOut(string s) { freopen(s.c_str(), "w", stdout); }
void setIO(string s = "", bool inter = false) {
  cout.setf(ios::fixed);
  cout.precision(20);
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  if ((int)s.size()) {
    setIn(s + ".in"), setOut(s + ".out");
  }
}
}  // namespace io
using namespace io;
pair<int, int> getNorm(pair<int, int> a) {
  if (a.first > a.second) swap(a.first, a.second);
  return a;
}
long long safeMult(long long a, long long b) {
  if (a == 0 || b == 0) return 0;
  if (!((LL_INF / a) / b)) return LL_INF;
  return a * b;
}
mt19937 rng((uint32_t)chrono::steady_clock::now().time_since_epoch().count());
long long sum(long long f, long long s, long long cnt) {
  return (f + f + s * (cnt - 1)) * cnt / 2;
}
int main() {
  setIO();
  int t;
  re(t);
  while (t--) {
    long long n, m;
    re(n, m);
    if (m == 1) {
      if (n % 2) {
        pr((n / 2 + 1) * (n / 2 + 1));
      } else {
        pr((n / 2) * (n / 2 + 1));
      }
      pr("\n");
      continue;
    }
    long long l = 0, r = 1e9;
    while (r - l > 1) {
      long long mid = (l + r) / 2;
      if ((mid + 1) * m <= n) {
        l = mid;
      } else {
        r = mid;
      }
    }
    long long k = l;
    pr((k + 1) * (n * m - sum(k, k + 1, m)), "\n");
  }
  return 0;
}
