#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <math.h>
#include <assert.h>
#include <vector>

using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
static const double EPS = 1e-9;
static const double PI = acos(-1.0);

#define REP(i, n) for (int i = 0; i < (int)(n); i++)
#define FOR(i, s, n) for (int i = (s); i < (int)(n); i++)
#define FOREQ(i, s, n) for (int i = (s); i <= (int)(n); i++)
#define FORIT(it, c) for (__typeof((c).begin())it = (c).begin(); it != (c).end(); it++)
#define MEMSET(v, h) memset((v), h, sizeof(v))

int n, m, s;
const int MOD = 100000;
int dp[2010][3010];

int main() {
  while (scanf("%d %d %d", &n, &m, &s), n|m|s) {
    MEMSET(dp, 0);
    FOREQ(i, 0, m) {
      dp[i][0] = 1;
    }
    REP(iter, n * n) {
      dp[m][s] = 0;
      for (int i = m; i >= 1; i--) {
        int upper = s - i * (n * n - iter);
        FOREQ(j, 0, upper) {
          dp[i][j + i] = dp[i - 1][j];
        }
        memset(dp[i], 0, sizeof(int) * i);
      }
      FOREQ(i, 1, m) {
        int upper = s + i - i * (n * n - iter);
        FOREQ(j, 0, upper) {
          dp[i][j] += dp[i - 1][j];
          dp[i][j] %= MOD;
        }
      }
      if (iter == 0) {
        FOREQ(i, 0, m) {
          dp[i][0] = 0;
        }
      }
    }
    printf("%d\n", dp[m][s]);
  }
}