#include <bits/stdc++.h>
using namespace std;
const long long mo = 1e9 + 7;
template <typename _T>
void read(_T &x) {
  _T f = 1;
  x = 0;
  char s = getchar();
  while (s > '9' || s < '0') {
    if (s == '-') f = -1;
    s = getchar();
  }
  while (s >= '0' && s <= '9') {
    x = (x << 3) + (x << 1) + (s ^ 48);
    s = getchar();
  }
  x *= f;
}
template <typename _T>
_T Fabs(_T x) {
  return x < 0 ? -x : x;
}
long double ans, f[100010];
long double C(int n, int m) { return f[n] - f[m] - f[n - m]; }
int n, m, k;
signed main() {
  read(n);
  read(m);
  read(k);
  for (int i = 1; i <= 1e5; i++) f[i] = f[i - 1] + log(1.0 * i);
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++) {
      int num = (i + j) * n - i * j;
      if (num <= k) {
        long double p = C(n, i) + C(n, j) + C(m - num, k - num) - C(m, k);
        ans = min(ans + exp(p), (long double)1e99);
      }
    }
  printf("%.10lf", (double)ans);
  return 0;
}
