func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MaxN = 2100;   inline long long add(long long a, long long b) {     long long c = a + b;     if (c >= (1000000007)) {       c -= (1000000007);     }     return c;   }   inline long long mul(long long a, long long b) {     return (a * b) % (1000000007);   }   int n, m;   long long D[MaxN][MaxN], D2[MaxN][MaxN];   int main() {     scanf( %d %d , &n, &m);     for (int i = 2; i <= m; i++) {       D[0][i] = 1;       D2[0][i] = 1;     }     for (int i = 1; i < n; i++) {       long long sum = 0;       for (int j = 2; j <= m; j++) {         sum = add(sum, D[i - 1][j]), D[i][j] = add(D[i][j - 1], sum);       }       for (int j = 2; j <= m; j++) {         D[i][j] = add(D[i][j], 1),         D2[i][j] = add(D[i][j], (1000000007) - D[i - 1][j]);       }     }     long long ans = 0;     for (int i = 0; i < n; i++) {       for (int j = 2; j <= m; j++) {         ans = add(ans, mul(m - j + 1, mul(D[i][j], D2[n - i - 1][j])));       }     }     printf( %I64d n , ans);     return 0;   }   