#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace atcoder; typedef long long ll; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define repr(i, n) for (int i = (int)(n) - 1; i >= 0; i--) #define repk(i, k, n) for (int i = k; i < (int)(n); i++) #define all(v) v.begin(), v.end() #define mod1 1000000007 #define mod2 998244353 #define mod3 100000007 #define vi vector #define vs vector #define vc vector #define vl vector #define vb vector #define vvi vector> #define vvc vector> #define vvl vector> #define vvb vector> #define vvvi vector>> #define vvvl vector>> #define pii pair #define pil pair #define pli pair #define pll pair #define vpii vector> #define vpll vector> #define vvpii vector>> #define vvpll vector>> template void debug(T e) { cerr << e << endl; } template void debug(vector &v) { rep(i, v.size()) { cerr << v[i] << " "; } cerr << endl; } template void debug(vector> &v) { rep(i, v.size()) { rep(j, v[i].size()) { cerr << v[i][j] << " "; } cerr << endl; } } template void debug(vector> &v) { rep(i, v.size()) { cerr << v[i].first << " " << v[i].second << endl; } } template void debug(set &st) { for (auto itr = st.begin(); itr != st.end(); itr++) { cerr << *itr << " "; } cerr << endl; } template void debug(multiset &ms) { for (auto itr = ms.begin(); itr != ms.end(); itr++) { cerr << *itr << " "; } cerr << endl; } template void debug(map &mp) { for (auto itr = mp.begin(); itr != mp.end(); itr++) { cerr << itr->first << " " << itr->second << endl; } } void debug_out() { cerr << endl; } template void debug_out(Head H, Tail... T) { cerr << H << " "; debug_out(T...); } using mint = modint1000000007; void debug_mint1(vector &vec) { for (int i = 0; i < vec.size(); i++) { cerr << vec[i].val() << " "; } cerr << endl; } void debug_mint2(vector> &vec) { for (int i = 0; i < vec.size(); i++) { for (int j = 0; j < vec[i].size(); j++) { cerr << vec[i][j].val() << " "; } cerr << endl; } } ll batch = 5000000; mint calc_fact(vector &embed_fact, ll v){ ll bval = v - v % batch; mint ret = embed_fact[bval / batch]; for (ll i = bval + 1; i <= v; i++){ ret *= mint(i); } return ret; } int main() { ll K; cin >> K; if (K % 2 == 1){ cout << 0 << endl; return 0; } vector fact_batch = {1, 974067448, 682498929, 598816162, 491101308, 586350670, 76479948, 463847391, 723816384, 172827403, 67347853, 407719831, 27368307, 606322308, 625544428, 1669644, 199888908, 534491822, 888050723, 884343068, 927880474, 112249297, 281863274, 770511792, 661224977, 935080803, 623534362, 797848181, 970055531, 232253360, 261384175, 659224434, 195888993, 509096183, 66404266, 785113347, 547665832, 996122673, 109838563, 34538816, 933245637, 911398531, 724691727, 114985663, 368925948, 464456846, 268838846, 938269070, 136026497, 564758715, 112390913, 167240465, 135498044, 889410460, 217544623, 996097969, 419363534, 607730875, 500780548, 651081062, 668123525, 563432246, 128487469, 318951960, 30977140, 93940075, 522049725, 559947225, 309058615, 624577416, 386027524, 716986954, 189239124, 179518046, 148528617, 529726489, 940567523, 473718967, 917084264, 105419548, 429277690, 937409008, 996164327, 418537348, 358655417, 775305697, 568392357, 392838702, 780072518, 596737944, 462639908, 843321396, 275105629, 432030917, 909210595, 321685608, 99199382, 5003231, 703397904, 863250534, 733333339, 180898306, 97830135, 864869025, 608823837, 46819124, 256141983, 491415383, 141827977, 688809790, 696628828, 457469634, 637939935, 502297454, 811575797, 48053248, 848924691, 26011548, 131772368, 271198437, 724464507, 510650790, 272814771, 564188856, 326159309, 44135644, 456152084, 816929577, 903466878, 218107212, 92255682, 196345098, 769795511, 407518072, 373745190, 147050765, 606241871, 666493603, 825871994, 561011609, 957939114, 765215899, 435887178, 201339230, 852304035, 469928208, 663307737, 414236650, 375297772, 211487466, 217598709, 676526196, 624148346, 439411911, 671734977, 644050694, 624500515, 715264908, 748510389, 819801784, 203191898, 340030191, 423951674, 331910086, 629786193, 341080135, 672850561, 684748812, 814362881, 60625018, 823845496, 175638827, 116667533, 163928347, 256473217, 393556719, 627655552, 687265514, 245795606, 36292292, 586445753, 953634340, 172114298, 260466949, 193781724, 756154604, 778983779, 49031023, 83868974, 954913, 315103615, 346966053, 965785236, 321900901, 492741665, 532702135, 377329025, 847645126, 847549272, 3258987, 698611116}; mint f = calc_fact(fact_batch, K); mint fhalf = calc_fact(fact_batch, K / 2); cout << (f / (fhalf * fhalf)).val() << endl; }