import std.stdio;
import std.c.stdio;
import std.range;
import std.array;
import std.functional;
import std.algorithm;
import std.conv;
import std.container;
import std.math;
import std.numeric;
import std.string;
import std.c.string;
import std.regex;
import std.typecons;

void dump(int[][] F) {
    foreach (ref L; F) L.writeln;
    writeln;
}

void main() {
    static const C = 100000;
    int N, M, S;
    int dfs() {
        int x = N * N;
        int[][] dp = new int[][](M + 1, S + 1);
        foreach (i; 0 .. M + 1) dp[i][] = -1;
        dp[0][0] = 1;
        for (int i = x; i >= 0; i--) {
            for (int u = 0; u < M; u++) {
                for (int s = 0; s <= S; s++) {
                    if (s + i > S) break;
                    if (dp[u][s] < 0) continue;
                    if (dp[u + 1][s + i] < 0) dp[u + 1][s + i] = 0;
                    dp[u + 1][s + i] += dp[u][s];
                    dp[u + 1][s + i] %= C;
                }
            }
        }
        return dp[M][S];
    }
    while (scanf("%d %d %d\n", &N, &M, &S), N || M || S) {
        int x = N * N;
        M -= x;
        S -= (x + 1) * x / 2;
        dfs.writeln;
    }
}