//Computing Binomial Coefficients i.e. N choose R using dynamic programming!
/*
using the recurrent formula nCr=(n-1)C(r)+(n-1)C(r-1)
we can use dynamic programming type approach to precompute all the binomial coefficients in O(n^2) and answer queries in O(1)
use this method when n<=5000 only.
also use this method when nCr%non-prime is required.
*/
//by Tanmay Chaudhari
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
//#pragma comment(linker, "/STACK:66777216")
#include <bits/stdc++.h>
using namespace std;
#define si(a) scanf("%d",&a)
#define sl(a) scanf("%lld",&a)
#define pi(a) printf("%d\n",a)
#define pl(a) printf("%lld\n",a)
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<vi> vvi;
typedef vector<ii> vii;
#define SET(a,b) memset(a,b,sizeof(a))
#define forall(i,a,b) for(int i=a; i<b; i++)
#define forrev(i,a,b) for(int i=a; i>=b; i--)
#define forr(it,container) for(auto it=container.begin(); it!=container.end(); it++)
#define w(t) int t;si(t);while(t--)
#define TRACE
#ifdef TRACE
#define trace1(x) cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define trace3(x, y, z) cerr << #x << ": " << x << " | " << #y << ": " << y << " | " << #z << ": " << z << endl;
#define trace4(a, b, c, d) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << endl;
#define trace5(a, b, c, d, e) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << endl;
#define trace6(a, b, c, d, e, f) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << " | " << #f << ": " << f << endl;
#else
#define trace1(x)
#define trace2(x, y)
#define trace3(x, y, z)
#define trace4(a, b, c, d)
#define trace5(a, b, c, d, e)
#define trace6(a, b, c, d, e, f)
#endif
const int MOD = 1e9 + 7;
ll ncr[5005][5005];
void precompute()
{
int k;
for (int i = 0; i < 5001; i++)
{
ncr[i][0] = ncr[i][i] = 1;
k = i >> 1;
for (int j = 1; j < k + 1; j++)
ncr[i][j] = ncr[i][i - j] = (ncr[i - 1][j] + ncr[i - 1][j - 1]) % MOD;
}
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
precompute();
pl(ncr[4892][231]);
return 0;
}
Ly9Db21wdXRpbmcgQmlub21pYWwgQ29lZmZpY2llbnRzIGkuZS4gTiBjaG9vc2UgUiB1c2luZyBkeW5hbWljIHByb2dyYW1taW5nIQovKgp1c2luZyB0aGUgcmVjdXJyZW50IGZvcm11bGEJbkNyPShuLTEpQyhyKSsobi0xKUMoci0xKQp3ZSBjYW4gdXNlIGR5bmFtaWMgcHJvZ3JhbW1pbmcgdHlwZSBhcHByb2FjaCB0byBwcmVjb21wdXRlIGFsbCB0aGUgYmlub21pYWwgY29lZmZpY2llbnRzIGluIE8obl4yKSBhbmQgYW5zd2VyIHF1ZXJpZXMgaW4gTygxKQp1c2UgdGhpcyBtZXRob2Qgd2hlbiBuPD01MDAwIG9ubHkuCmFsc28gdXNlIHRoaXMgbWV0aG9kIHdoZW4gbkNyJW5vbi1wcmltZSBpcyByZXF1aXJlZC4KKi8KLy9ieSBUYW5tYXkgQ2hhdWRoYXJpCiNpZmRlZiBfTVNDX1ZFUgojZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCiNlbmRpZgovLyNwcmFnbWEgY29tbWVudChsaW5rZXIsICIvU1RBQ0s6NjY3NzcyMTYiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgc2koYSkJCQkJc2NhbmYoIiVkIiwmYSkKI2RlZmluZSBzbChhKQkJCQlzY2FuZigiJWxsZCIsJmEpCiNkZWZpbmUgcGkoYSkJCQkJcHJpbnRmKCIlZFxuIixhKQojZGVmaW5lIHBsKGEpCQkJCXByaW50ZigiJWxsZFxuIixhKQoKdHlwZWRlZiBsb25nIGxvbmcJCQlsbDsKdHlwZWRlZiB2ZWN0b3I8aW50PgkJCXZpOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+CQlpaTsKdHlwZWRlZiB2ZWN0b3I8dmk+CQkJdnZpOwp0eXBlZGVmIHZlY3RvcjxpaT4JCQl2aWk7CgojZGVmaW5lIFNFVChhLGIpCQkJbWVtc2V0KGEsYixzaXplb2YoYSkpCQojZGVmaW5lIGZvcmFsbChpLGEsYikJCWZvcihpbnQgaT1hOyBpPGI7IGkrKykKI2RlZmluZSBmb3JyZXYoaSxhLGIpCQlmb3IoaW50IGk9YTsgaT49YjsgaS0tKQojZGVmaW5lIGZvcnIoaXQsY29udGFpbmVyKSAgZm9yKGF1dG8gaXQ9Y29udGFpbmVyLmJlZ2luKCk7IGl0IT1jb250YWluZXIuZW5kKCk7IGl0KyspCiNkZWZpbmUgdyh0KQkJCQlpbnQgdDtzaSh0KTt3aGlsZSh0LS0pCgojZGVmaW5lIFRSQUNFCgojaWZkZWYgVFJBQ0UKI2RlZmluZSB0cmFjZTEoeCkgICAgICAgICAgICAgICAgY2VyciA8PCAjeCA8PCAiOiAiIDw8IHggPDwgZW5kbDsKI2RlZmluZSB0cmFjZTIoeCwgeSkgICAgICAgICAgICAgY2VyciA8PCAjeCA8PCAiOiAiIDw8IHggPDwgIiB8ICIgPDwgI3kgPDwgIjogIiA8PCB5IDw8IGVuZGw7CiNkZWZpbmUgdHJhY2UzKHgsIHksIHopICAgICAgICAgIGNlcnIgPDwgI3ggPDwgIjogIiA8PCB4IDw8ICIgfCAiIDw8ICN5IDw8ICI6ICIgPDwgeSA8PCAiIHwgIiA8PCAjeiA8PCAiOiAiIDw8IHogPDwgZW5kbDsKI2RlZmluZSB0cmFjZTQoYSwgYiwgYywgZCkgICAgICAgY2VyciA8PCAjYSA8PCAiOiAiIDw8IGEgPDwgIiB8ICIgPDwgI2IgPDwgIjogIiA8PCBiIDw8ICIgfCAiIDw8ICNjIDw8ICI6ICIgPDwgYyA8PCAiIHwgIiA8PCAjZCA8PCAiOiAiIDw8IGQgPDwgZW5kbDsKI2RlZmluZSB0cmFjZTUoYSwgYiwgYywgZCwgZSkgICAgY2VyciA8PCAjYSA8PCAiOiAiIDw8IGEgPDwgIiB8ICIgPDwgI2IgPDwgIjogIiA8PCBiIDw8ICIgfCAiIDw8ICNjIDw8ICI6ICIgPDwgYyA8PCAiIHwgIiA8PCAjZCA8PCAiOiAiIDw8IGQgPDwgIiB8ICIgPDwgI2UgPDwgIjogIiA8PCBlIDw8IGVuZGw7CiNkZWZpbmUgdHJhY2U2KGEsIGIsIGMsIGQsIGUsIGYpIGNlcnIgPDwgI2EgPDwgIjogIiA8PCBhIDw8ICIgfCAiIDw8ICNiIDw8ICI6ICIgPDwgYiA8PCAiIHwgIiA8PCAjYyA8PCAiOiAiIDw8IGMgPDwgIiB8ICIgPDwgI2QgPDwgIjogIiA8PCBkIDw8ICIgfCAiIDw8ICNlIDw8ICI6ICIgPDwgZSA8PCAiIHwgIiA8PCAjZiA8PCAiOiAiIDw8IGYgPDwgZW5kbDsKCiNlbHNlCgojZGVmaW5lIHRyYWNlMSh4KQojZGVmaW5lIHRyYWNlMih4LCB5KQojZGVmaW5lIHRyYWNlMyh4LCB5LCB6KQojZGVmaW5lIHRyYWNlNChhLCBiLCBjLCBkKQkKI2RlZmluZSB0cmFjZTUoYSwgYiwgYywgZCwgZSkKI2RlZmluZSB0cmFjZTYoYSwgYiwgYywgZCwgZSwgZikKCiNlbmRpZgoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmxsIG5jcls1MDA1XVs1MDA1XTsKCnZvaWQgcHJlY29tcHV0ZSgpCnsKCWludCBrOwoJZm9yIChpbnQgaSA9IDA7IGkgPCA1MDAxOyBpKyspCgl7CgkJbmNyW2ldWzBdID0gbmNyW2ldW2ldID0gMTsKCQlrID0gaSA+PiAxOwoJCWZvciAoaW50IGogPSAxOyBqIDwgayArIDE7IGorKykKCQkJbmNyW2ldW2pdID0gbmNyW2ldW2kgLSBqXSA9IChuY3JbaSAtIDFdW2pdICsgbmNyW2kgLSAxXVtqIC0gMV0pICUgTU9EOwoJfQp9CgppbnQgbWFpbigpCnsKCS8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwoJLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKCXByZWNvbXB1dGUoKTsKCXBsKG5jcls0ODkyXVsyMzFdKTsKCXJldHVybiAwOwp9