#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ll p;
int n, k;
ll f[210][210], g[210][210][210];

void work1() {
    ll ans = 0;
    int m = (n + k) / 2;
    g[0][0][0] = 1;
    for (int i = 1; i <= m; i++) {
        // 都不é€?
        for (int j = 0; j <= n; j++)
            for (int q = 0; q <= k + 1; q++) g[i][0][0] = (g[i][0][0] + g[i - 1][j][q]) % p;

        // 只选右
        if (i * 2 <= n)
            for (int j = 0; j <= n; j++)
                for (int q = 0; q <= k + 1; q++) g[i][j + 1][0] = (g[i][j + 1][0] + g[i - 1][j][q]) % p;

        // 只选左
        if (i * 2 >= k + 1)
            for (int j = 0; j <= n; j++) {
                for (int q = 1; q <= k + 1; q++) g[i][0][q + 1] = (g[i][0][q + 1] + g[i - 1][j][q]) % p;
                g[i][0][0] = (g[i][0][0] + g[i - 1][j][0]) % p;
                // 特判只有一个点，此时没用，当成0个点
            }

        // 左右都é€?
        if (i * 2 >= k + 1 && i * 2 <= n)
            for (int j = 0; j <= n && j + 1 <= k + 1; j++)
                for (int q = 0; q <= k + 1; q++)
                    g[i][j + 1][max(q + 1, j + 2)] = (g[i][j + 1][max(q + 1, j + 2)] + g[i - 1][j][q]) % p;
    }

    for (int i = 0; i <= n; i++)
        for (int j = 0; j <= k + 1; j++) ans = (ans + g[m][i][j]) % p;
    cout << ans << endl;
}
void work2() {
    ll sum1 = 0, sum2 = 0;
    f[0][0] = 1;
    k /= 2;
    for (int i = 1; i <= n; i++)
        for (int j = 0; j <= k; j++) {
            f[i][0] = (f[i][0] + f[i - 1][j]) % p;
            if (j)
                f[i][j] = (f[i][j] + f[i - 1][j - 1]) % p;
        }
    for (int i = 0; i <= k; i++) {
        sum1 = (sum1 + f[n / 2][i]) % p;
        sum2 = (sum2 + f[(n + 1) / 2][i]) % p;
    }
    cout << sum1 * sum2 % p << endl;
}
int main() {
    freopen("basket2.in", "r", stdin);
    freopen("basket.out", "w", stdout);
    int T;
    cin >> T;
    while (T--) {
        cin >> n >> k >> p;
        n--;
        memset(f, 0, sizeof f);
        memset(g, 0, sizeof g);
        if (k & 1)
            work1();
        else
            work2();
    }
    return 0;
}
