#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int w = 0, x = 0;
  char c = getchar();
  while (!isdigit(c)) w |= c == '-', c = getchar();
  while (isdigit(c)) x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
  return w ? -x : x;
}
namespace star {
const int maxn = 1e5 + 10;
int n, m, k;
long double ans, mul[maxn];
inline long double C(int n, int m) { return mul[n] - mul[m] - mul[n - m]; }
inline void work() {
  n = read(), m = read(), k = read();
  for (int i = 1; i <= m; i++) mul[i] = mul[i - 1] + log(1.0 * i);
  for (int x = 0; x <= n; x++)
    for (int y = 0; y <= n; y++)
      if (((x + y) * n - x * y) <= k)
        ans += exp(C(n, x) + C(n, y) +
                   C(m - ((x + y) * n - x * y), k - ((x + y) * n - x * y)) -
                   C(m, k));
  if (ans > 1e99) ans = 1e99;
  printf("%.10lf", (double)ans);
}
}  // namespace star
signed main() {
  star::work();
  return 0;
}
