#include <bits/stdc++.h>
using namespace std;
int t;
long long a, b, c, d;
class FastIO {
 private:
  struct control {
    int ct, val;
    control(int Ct, int Val = -1) : ct(Ct), val(Val) {}
    inline control operator()(int Val) { return control(ct, Val); }
  } _endl, _prs, _setprecision;
  char in[1000000], *p, *pp, out[1000000], *q, *qq, ch[20], *t, b, K, prs;
  inline char getch() {
    return p == pp && (pp = (p = in) + fread(in, 1, 1000000, stdin), p == pp)
           ? b = 0,
             EOF : *p++;
  }
  inline void putch(char x) {
    q == qq && (fwrite(out, 1, q - out, stdout), q = out), *q++ = x;
  }
  inline void puts(const char str[]) {
    fwrite(out, 1, q - out, stdout), fwrite(str, 1, strlen(str), stdout),
        q = out;
  }
  inline void getline(string& s) {
    s = "";
    for (register char ch; (ch = getch()) != '\n' && b;) s += ch;
  }

 public:
  FastIO()
      : _endl(0),
        _prs(1),
        _setprecision(2),
        p(in),
        pp(in),
        q(out),
        qq(out + 1000000),
        t(ch),
        b(1),
        K(6) {}
  ~FastIO() { fwrite(out, 1, q - out, stdout); }
  inline FastIO& operator>>(int& x) {
    x = 0;
    register char f = 0, ch;
    while (!isdigit(ch = getch()) && b) f |= ch == '-';
    while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getch();
    return x = f ? -x : x, *this;
  }
  inline FastIO& operator>>(long long& x) {
    x = 0;
    register char f = 0, ch;
    while (!isdigit(ch = getch()) && b) f |= ch == '-';
    while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getch();
    return x = f ? -x : x, *this;
  }
  inline FastIO& operator>>(char& ch) { return ch = getch(), *this; }
  inline FastIO& operator>>(string& s) {
    s = "";
    register char ch;
    while (isspace(ch = getch()) && b)
      ;
    while (!isspace(ch) && b) s += ch, ch = getch();
    return *this;
  }
  inline FastIO& operator>>(double& x) {
    x = 0;
    register char f = 0, ch;
    double d = 0.1;
    while (!isdigit(ch = getch()) && b) f |= (ch == '-');
    while (isdigit(ch)) x = x * 10 + (ch ^ 48), ch = getch();
    if (ch == '.')
      while (isdigit(ch = getch())) x += d * (ch ^ 48), d *= 0.1;
    return x = f ? -x : x, *this;
  }
  inline FastIO& operator<<(int x) {
    !x && (putch('0'), 0), x < 0 && (putch('-'), x = -x);
    while (x) *t++ = x % 10 + 48, x /= 10;
    while (t != ch) *q++ = *--t;
    return *this;
  }
  inline FastIO& operator<<(long long x) {
    !x && (putch('0'), 0), x < 0 && (putch('-'), x = -x);
    while (x) *t++ = x % 10 + 48, x /= 10;
    while (t != ch) *q++ = *--t;
    return *this;
  }
  inline FastIO& operator<<(char ch) { return putch(ch), *this; }
  inline FastIO& operator<<(const char str[]) { return puts(str), *this; }
  inline FastIO& operator<<(const string& s) { return puts(s.c_str()), *this; }
  inline FastIO& operator<<(double x) {
    register int k = 0;
    this->operator<<(int(x));
    putch('.');
    x -= int(x);
    prs && (x += 5 * pow(10, -K - 1));
    while (k < K) putch(int(x *= 10) ^ 48), x -= int(x), ++k;
    return *this;
  }
  inline FastIO& operator<<(const control& cl) {
    switch (cl.ct) {
      case 0:
        putch('\n');
        break;
      case 1:
        prs = cl.val;
        break;
      case 2:
        K = cl.val;
        break;
    }
  }
  inline operator bool() { return b; }
} io;
int main() {
  scanf("%d", &t);
  while (t--) {
    scanf("%lld%lld%lld%lld", &a, &b, &c, &d);
    if (a > b * c)
      printf("-1\n");
    else
      printf("%lld\n", ((((a - 1) / b) / d + 1) * a -
                        ((a - 1) / b / d) * ((a - 1) / b / d + 1) / 2 * b * d));
  }
}
