#include <bits/stdc++.h>   using namespace std;   const long double lim = 1e99;   template <typename T>   inline T read() {     register T sum = 0;     register char cc = getchar();     int sym = 1;     while (cc !=  -  && (cc >  9  || cc <  0 )) cc = getchar();     if (cc ==  - ) sym = -1, cc = getchar();     sum = sum * 10 + cc -  0 ;     cc = getchar();     while (cc >=  0  && cc <=  9 ) sum = sum * 10 + cc -  0 , cc = getchar();     return sym * sum;   }   template <typename T>   inline T read(T& a) {     a = read<T>();     return a;   }   template <typename T, typename... Others>   inline void read(T& a, Others&... b) {     a = read(a);     read(b...);   }   int n, m, K;   long double ans, fac[100010];   long double C(int n, int m) { return fac[n] - fac[m] - fac[n - m]; }   int main() {     read(n, m, K);     for (int i = 1; i <= m; i++) fac[i] = fac[i - 1] + log(1. * 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), lim);         }       }     printf( %.15Lf n , ans);     return 0;   }   