#include <bits/stdc++.h>
using namespace std;
void file(string s) {
  freopen((s + ".in").c_str(), "r", stdin);
  freopen((s + ".out").c_str(), "w", stdout);
}
template <typename Tp>
void read(Tp &x) {
  int fh = 1;
  char c = getchar();
  x = 0;
  while (c > '9' || c < '0') {
    if (c == '-') {
      fh = -1;
    }
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = (x << 1) + (x << 3) + (c & 15);
    c = getchar();
  }
  x *= fh;
}
int n, m, k;
long double frac[1000005];
long double Binom(int x, int y) {
  if (x < y || y < 0) return 0;
  return frac[x] - frac[y] - frac[x - y];
}
long double ans;
signed main() {
  read(n);
  read(m);
  read(k);
  for (int i = 1; i <= m; ++i) frac[i] = frac[i - 1] + log(i * 1.0);
  for (int i = 0; i <= n; ++i) {
    for (int j = 0; j <= n; ++j) {
      int nm = (i + j) * n - i * j;
      if (k < nm) continue;
      ans = (ans + exp(Binom(n, i) + Binom(n, j) + Binom(m - nm, k - nm) -
                       Binom(m, k)));
    }
  }
  if (ans > 1e99)
    puts("1e99");
  else
    cout << fixed << setprecision(15) << ans << endl;
  return 0;
}
