func_code_string: #include <bits/stdc++.h>   using namespace std;   long long dp[1020][600], mod = (1000000007);   long long solve(int n, int m, int k) {     if (n < 2 * k - 1 or m < 2 * k - 1) return 0;     if (n <= 0 or m <= 0) return !k;     if (!k) return 1;     if (n == 2 * k - 1) {       if (dp[m][k] != -1) return dp[m][k];       long long ans = 0;       for (int dy = 1; dy <= m; dy++) {         long long aux = (solve(2 * k - 3, dy - 2, k - 1) * (m - dy + 1)) % mod;         ans += aux;         if (ans > mod) ans -= mod;       }       return dp[m][k] = ans;     } else if (m == 2 * k - 1)       return dp[n][k] = solve(2 * k - 1, n, k);     else       return (solve(n, 2 * k - 1, k) * solve(2 * k - 1, m, k)) % mod;   }   int n, m, k;   int32_t main() {     ios::sync_with_stdio(false);     cin.tie(0);     cin >> n >> m >> k;     memset(dp, -1, sizeof dp);     cout << solve(n - 2, m - 2, k) <<   n ;   }   