// GeniePuzzle.java

import java.io.*;
import java.util.StringTokenizer;

    // Recurrence relations are used to characterize the number of partitions whose 
    // groups have size between k and kmax inclusive. For an account of these relations,
    // see Laszlo & Mukherjee, "Minimum Spanning Tree Partitioning Algorithm 
    // for Microaggregation", IEEE Transactions on Knowledge and Data Engineering, 
    // to appear.

public class GeniePuzzle {



    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int numCases = Integer.parseInt(in.readLine());
        for (int i = 0; i < numCases; i++){
            int[] input = getTestCase( in );
            GeniePuzzle genie = new GeniePuzzle();
            System.out.println( genie.value(input[2], input[1], input[0]) );
        }
    }

    public long value(int k, int kmax, int n) {
        if ((k <= n) && (k <= kmax))
            return P(k, kmax, n, 0);
        else 
            return 0;
    }

    public long P(int k, int kmax, int n, int m) {
        if (n < m * k)
            return 0;
        else if (n == m * k)
            return G(k, n, m);
        else {
            long a = value(k+1, kmax, n-m*k) * G(k, n, m);
            long b = P(k, kmax, n, m+1);
            return a + b;
        }
    }


    public long G(int k, int n, int m) {
        long num = factDownTo(n, m);
        long denom = power(fact(k), m) * fact(n-m*k);
        return num / denom;
    }
    
    long fact(int n) {
        long res = 1;
        for (long i = 2; i <= n; i++)
            res *= i;
        return res;
    }
    
    long factDownTo(int n, int m) {
        long res = 1;
        for (long i = m+1; i <= n; i++)
            res *= i;
        return res;
    }
    
    long power(long a, long b) {
        if (b == 0)
            return 1;
        else {
            long c = power(a, (long)(b/2));
            if ((b%2) == 0)
                return c * c;
            else
                return c * c * a;
        }
    }
        


    
    static int[] getTestCase(BufferedReader in) throws IOException {
        int[] res = new int[3];

        StringTokenizer toks = new StringTokenizer(in.readLine());

        for (int i = 0; i < 3; i++){
            res[i] = Integer.parseInt(toks.nextToken());
        }
            
        return res;
    }





}
