#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<string> vs;
typedef map<int, int> mii;
typedef map<string, int> msi;
typedef set<int> si; 
typedef multiset<int> multis;

#define strToUpper(s) transform(s.begin(), s.end(), s.begin(), ::toupper);
#define strToLower(s) transform(s.begin(), s.end(), s.begin(), ::tolower);
#define DDEBUG(x) cout << '>' << #x << ':' << x << endl; 
#define REP(i,n) for(int i=0;i<(n);i++) 
#define FOR(i,a,b) for(int i=(a);i<=(b);i++) 
#define FORD(i,a,b) for(int i=(a);i>=(b);i--) 
#define endl "\n"
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define SS stringstream 
#define sum(a)     ( accumulate ((a).begin(), (a).end(), 0ll))
#define mine(a)    (*min_element((a).begin(), (a).end()))
#define maxe(a)    (*max_element((a).begin(), (a).end()))
#define mini(a)    ( min_element((a).begin(), (a).end()) - (a).begin())
#define maxi(a)    ( max_element((a).begin(), (a).end()) - (a).begin())
#define lowb(a, x) ( lower_bound((a).begin(), (a).end(), (x)) - (a).begin())
#define uppb(a, x) ( upper_bound((a).begin(), (a).end(), (x)) - (a).begin())
#define findX(a, x) ( find((a).begin(), (a).end(), (x)) != (a).end())
 

template<class T> T gcd(T a,T b){if(b == 0)return a;return gcd(b,a%b);} 
template<class T> T lcm(T a, T b ){return (a*b)/gcd(a,b);} 
template <class T> string toString( T n ){SS x;x << n;return x.str();}
template<class T> int toInteger(T n){return stoi(n);}


void solve(){
    ll n,x,t;
    cin >> n >> x >> t;
    ll num = t/x;
    ll ans = 0;
    if (n >= num)
    {
        ll temp = n - num;
        ans += (num * temp);
        //num -= 1;
        ans += (num*(num-1)/2);

    }
    else
    {
        ans += (n*(n-1)/2);
    }
    cout << ans << endl;
    
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int tt;
    cin >> tt;
    while(tt--)
    solve();
    return 0;
}