#ifndef HIDDEN_IN_VS // 折りたたみ用 // 警告の抑制 #define _CRT_SECURE_NO_WARNINGS // ライブラリの読み込み #include using namespace std; // 型名の短縮 using ll = long long; using ull = unsigned long long; // -2^63 ~ 2^63 = 9e18(int は -2^31 ~ 2^31 = 2e9) using pii = pair; using pll = pair; using pil = pair; using pli = pair; using vi = vector; using vvi = vector; using vvvi = vector; using vvvvi = vector; using vl = vector; using vvl = vector; using vvvl = vector; using vvvvl = vector; using vb = vector; using vvb = vector; using vvvb = vector; using vc = vector; using vvc = vector; using vvvc = vector; using vd = vector; using vvd = vector; using vvvd = vector; template using priority_queue_rev = priority_queue, greater>; using Graph = vvi; // 定数の定義 const double PI = acos(-1); int DX[4] = { 1, 0, -1, 0 }; // 4 近傍(下,右,上,左) int DY[4] = { 0, 1, 0, -1 }; int INF = 1001001001; ll INFL = 4004004003094073385LL; // (int)INFL = INF, (int)(-INFL) = -INF; // 入出力高速化 struct fast_io { fast_io() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(18); } } fastIOtmp; // 汎用マクロの定義 #define all(a) (a).begin(), (a).end() #define sz(x) ((int)(x).size()) #define lbpos(a, x) (int)distance((a).begin(), std::lower_bound(all(a), (x))) #define ubpos(a, x) (int)distance((a).begin(), std::upper_bound(all(a), (x))) #define Yes(b) {cout << ((b) ? "Yes\n" : "No\n");} #define rep(i, n) for(int i = 0, i##_len = int(n); i < i##_len; ++i) // 0 から n-1 まで昇順 #define repi(i, s, t) for(int i = int(s), i##_end = int(t); i <= i##_end; ++i) // s から t まで昇順 #define repir(i, s, t) for(int i = int(s), i##_end = int(t); i >= i##_end; --i) // s から t まで降順 #define repe(v, a) for(const auto& v : (a)) // a の全要素(変更不可能) #define repea(v, a) for(auto& v : (a)) // a の全要素(変更可能) #define repb(set, d) for(int set = 0, set##_ub = 1 << int(d); set < set##_ub; ++set) // d ビット全探索(昇順) #define repis(i, set) for(int i = lsb(set), bset##i = set; i < 32; bset##i -= 1 << i, i = lsb(bset##i)) // set の全要素(昇順) #define repp(a) sort(all(a)); for(bool a##_perm = true; a##_perm; a##_perm = next_permutation(all(a))) // a の順列全て(昇順) #define uniq(a) {sort(all(a)); (a).erase(unique(all(a)), (a).end());} // 重複除去 #define EXIT(a) {cout << (a) << endl; exit(0);} // 強制終了 #define inQ(x, y, u, l, d, r) ((u) <= (x) && (l) <= (y) && (x) < (d) && (y) < (r)) // 半開矩形内判定 // 汎用関数の定義 template inline ll powi(T n, int k) { ll v = 1; rep(i, k) v *= n; return v; } template inline bool chmax(T& M, const T& x) { if (M < x) { M = x; return true; } return false; } // 最大値を更新(更新されたら true を返す) template inline bool chmin(T& m, const T& x) { if (m > x) { m = x; return true; } return false; } // 最小値を更新(更新されたら true を返す) template inline T getb(T set, int i) { return (set >> i) & T(1); } template inline T smod(T n, T m) { n %= m; if (n < 0) n += m; return n; } // 非負mod // 演算子オーバーロード template inline istream& operator>>(istream& is, pair& p) { is >> p.first >> p.second; return is; } template inline istream& operator>>(istream& is, vector& v) { repea(x, v) is >> x; return is; } template inline vector& operator--(vector& v) { repea(x, v) --x; return v; } template inline vector& operator++(vector& v) { repea(x, v) ++x; return v; } #endif // 折りたたみ用 #if __has_include() #include using namespace atcoder; #ifdef _MSC_VER #include "localACL.hpp" #endif //using mint = modint998244353; using mint = static_modint<(int)1e9+7>; //using mint = modint; // mint::set_mod(m); using vm = vector; using vvm = vector; using vvvm = vector; using vvvvm = vector; using pim = pair; #endif #ifdef _MSC_VER // 手元環境(Visual Studio) #include "local.hpp" #else // 提出用(gcc) int mute_dump = 0; int frac_print = 0; #if __has_include() namespace atcoder { inline istream& operator>>(istream& is, mint& x) { ll x_; is >> x_; x = x_; return is; } inline ostream& operator<<(ostream& os, const mint& x) { os << x.val(); return os; } } #endif inline int popcount(int n) { return __builtin_popcount(n); } inline int popcount(ll n) { return __builtin_popcountll(n); } inline int lsb(int n) { return n != 0 ? __builtin_ctz(n) : 32; } inline int lsb(ll n) { return n != 0 ? __builtin_ctzll(n) : 64; } inline int msb(int n) { return n != 0 ? (31 - __builtin_clz(n)) : -1; } inline int msb(ll n) { return n != 0 ? (63 - __builtin_clzll(n)) : -1; } #define dump(...) #define dumpel(v) #define dump_math(v) #define input_from_file(f) #define output_to_file(f) #define Assert(b) { if (!(b)) { vc MLE(1<<30); EXIT(MLE.back()); } } // RE の代わりに MLE を出す #endif void zikken() { int N = 20; vvi tbl(N); repi(n, 1, N) { dump(n); vvi dp; dp.push_back(vi(n)); repi(m, 1, 30) { vvi ndp; repea(a, dp) { rep(i, n) { a[i]++; a[(i + 1) % n]--; ndp.push_back(a); a[i]--; a[(i + 1) % n]++; a[i]--; a[(i + 1) % n]++; ndp.push_back(a); a[i]++; a[(i + 1) % n]--; } } uniq(ndp); dp = move(ndp); tbl[n - 1].push_back(sz(dp)); if (tbl[n - 1].back() > (int)5e5) break; } } dumpel(tbl); dump_math(tbl); exit(0); } /* 0: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2: 6 19 37 61 91 127 169 217 271 331 397 469 547 631 721 817 919 1027 1141 1261 1387 1519 1657 1801 1951 2107 2269 2437 2611 2791 3: 8 27 64 125 216 343 512 729 1000 1331 1728 2197 2744 3375 4096 4913 5832 6859 8000 9261 10648 12167 13824 15625 17576 19683 21952 24389 27000 29791 4: 10 51 180 501 1131 2221 3951 6531 10201 15231 21921 30601 41631 55401 72331 92871 117501 146731 181101 221181 267571 320901 381831 451051 529281 5: 12 73 284 835 2036 4347 8408 15069 25420 40821 62932 93743 135604 191255 263856 357017 474828 621889 6: 14 99 476 1765 5418 14407 33839 71835 140505 257069 445117 736009 7: 16 129 704 2875 9456 26411 65024 144909 298000 573661 8: 18 163 996 4645 17718 57799 166344 432073 1027351 9: 20 201 1360 7001 29112 101941 310472 843471 10: 22 243 1804 10165 46530 180775 614680 11: 24 289 2336 14305 71000 297381 1081088 12: 26 339 2964 19605 104910 474215 1866280 13: 28 393 3696 26265 150780 729905 14: 30 451 4540 34501 211546 1092231 15: 32 513 5504 44545 290592 1594369 16: 34 579 6596 56645 391782 2276743 17: 36 649 7824 71065 519492 18: 38 723 9196 88085 678642 19: 40 801 10720 108001 874728 {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31},{6,19,37,61,91,127,169,217,271,331,397,469,547,631,721,817,919,1027,1141,1261,1387,1519,1657,1801,1951,2107,2269,2437,2611,2791},{8,27,64,125,216,343,512,729,1000,1331,1728,2197,2744,3375,4096,4913,5832,6859,8000,9261,10648,12167,13824,15625,17576,19683,21952,24389,27000,29791},{10,51,180,501,1131,2221,3951,6531,10201,15231,21921,30601,41631,55401,72331,92871,117501,146731,181101,221181,267571,320901,381831,451051,529281},{12,73,284,835,2036,4347,8408,15069,25420,40821,62932,93743,135604,191255,263856,357017,474828,621889},{14,99,476,1765,5418,14407,33839,71835,140505,257069,445117,736009},{16,129,704,2875,9456,26411,65024,144909,298000,573661},{18,163,996,4645,17718,57799,166344,432073,1027351},{20,201,1360,7001,29112,101941,310472,843471},{22,243,1804,10165,46530,180775,614680},{24,289,2336,14305,71000,297381,1081088},{26,339,2964,19605,104910,474215,1866280},{28,393,3696,26265,150780,729905},{30,451,4540,34501,211546,1092231},{32,513,5504,44545,290592,1594369},{34,579,6596,56645,391782,2276743},{36,649,7824,71065,519492},{38,723,9196,88085,678642},{40,801,10720,108001,874728}}; これを 2D P-recursive チェッカーにぶち込みコードを自動生成する. 項数が足りないが LLL パワーでゴリ押す → 失敗 */ //【階乗など(法が大きな素数)】 /* * Factorial_mint(int N) : O(n) * N まで計算可能として初期化する. * * mint fact(int n) : O(1) * n! を返す. * * mint fact_inv(int n) : O(1) * 1/n! を返す(n が負なら 0 を返す) * * mint inv(int n) : O(1) * 1/n を返す. * * mint perm(int n, int r) : O(1) * 順列の数 nPr を返す. * * mint perm_inv(int n, int r) : O(1) * 順列の数の逆数 1/nPr を返す. * * mint bin(int n, int r) : O(1) * 二項係数 nCr を返す. * * mint bin_inv(int n, int r) : O(1) * 二項係数の逆数 1/nCr を返す. * * mint mul(vi rs) : O(|rs|) * 多項係数 nC[rs] を返す.(n = Σrs) * * mint hom(int n, int r) : O(1) * 重複組合せの数 nHr = n+r-1Cr を返す(0H0 = 1 とする) * * mint neg_bin(int n, int r) : O(1) * 負の二項係数 nCr = (-1)^r -n+r-1Cr を返す(n ≦ 0, r ≧ 0) * * mint pochhammer(int x, int n) : O(1) * ポッホハマー記号 x^(n) を返す(n ≧ 0) * * mint pochhammer_inv(int x, int n) : O(1) * ポッホハマー記号の逆数 1/x^(n) を返す(n ≧ 0) */ class Factorial_mint { int n_max; // 階乗と階乗の逆数の値を保持するテーブル vm fac, fac_inv; public: // n! までの階乗とその逆数を前計算しておく.O(n) Factorial_mint(int n) : n_max(n), fac(n + 1), fac_inv(n + 1) { // verify : https://atcoder.jp/contests/dwacon6th-prelims/tasks/dwacon6th_prelims_b fac[0] = 1; repi(i, 1, n) fac[i] = fac[i - 1] * i; fac_inv[n] = fac[n].inv(); repir(i, n - 1, 0) fac_inv[i] = fac_inv[i + 1] * (i + 1); } Factorial_mint() : n_max(0) {} // ダミー // n! を返す. mint fact(int n) const { // verify : https://atcoder.jp/contests/dwacon6th-prelims/tasks/dwacon6th_prelims_b Assert(0 <= n && n <= n_max); return fac[n]; } // 1/n! を返す(n が負なら 0 を返す) mint fact_inv(int n) const { // verify : https://atcoder.jp/contests/abc289/tasks/abc289_h Assert(n <= n_max); if (n < 0) return 0; return fac_inv[n]; } // 1/n を返す. mint inv(int n) const { // verify : https://atcoder.jp/contests/exawizards2019/tasks/exawizards2019_d Assert(n > 0); Assert(n <= n_max); return fac[n - 1] * fac_inv[n]; } // 順列の数 nPr を返す. mint perm(int n, int r) const { // verify : https://atcoder.jp/contests/abc172/tasks/abc172_e Assert(n <= n_max); if (r < 0 || n - r < 0) return 0; return fac[n] * fac_inv[n - r]; } // 順列の数 nPr の逆数を返す. mint perm_inv(int n, int r) const { // verify : https://yukicoder.me/problems/no/3139 Assert(n <= n_max); Assert(0 <= r); Assert(r <= n); return fac_inv[n] * fac[n - r]; } // 二項係数 nCr を返す. mint bin(int n, int r) const { // verify : https://judge.yosupo.jp/problem/binomial_coefficient_prime_mod Assert(n <= n_max); if (r < 0 || n - r < 0) return 0; return fac[n] * fac_inv[r] * fac_inv[n - r]; } // 二項係数の逆数 1/nCr を返す. mint bin_inv(int n, int r) const { // verify : https://www.codechef.com/problems/RANDCOLORING Assert(n <= n_max); Assert(r >= 0); Assert(n - r >= 0); return fac_inv[n] * fac[r] * fac[n - r]; } // 多項係数 nC[rs] を返す. mint mul(const vi& rs) const { // verify : https://yukicoder.me/problems/no/2141 if (*min_element(all(rs)) < 0) return 0; int n = accumulate(all(rs), 0); Assert(n <= n_max); mint res = fac[n]; repe(r, rs) res *= fac_inv[r]; return res; } // 重複組合せの数 nHr = n+r-1Cr を返す(0H0 = 1 とする) mint hom(int n, int r) { // verify : https://mojacoder.app/users/riantkb/problems/toj_ex_2 if (n == 0) return (int)(r == 0); if (r < 0 || n - 1 < 0) return 0; Assert(n + r - 1 <= n_max); return fac[n + r - 1] * fac_inv[r] * fac_inv[n - 1]; } // 負の二項係数 nCr を返す(n ≦ 0, r ≧ 0) mint neg_bin(int n, int r) { // verify : https://atcoder.jp/contests/abc345/tasks/abc345_g if (n == 0) return (int)(r == 0); if (r < 0 || -n - 1 < 0) return 0; Assert(-n + r - 1 <= n_max); return (r & 1 ? -1 : 1) * fac[-n + r - 1] * fac_inv[r] * fac_inv[-n - 1]; } // ポッホハマー記号 x^(n) を返す(n ≧ 0) mint pochhammer(int x, int n) { // verify : https://atcoder.jp/contests/agc070/tasks/agc070_c int x2 = x + n - 1; if (x <= 0 && 0 <= x2) return 0; if (x > 0) { Assert(x2 <= n_max); return fac[x2] * fac_inv[x - 1]; } else { Assert(-x <= n_max); return (n & 1 ? -1 : 1) * fac[-x] * fac_inv[-x2 - 1]; } } // ポッホハマー記号の逆数 1/x^(n) を返す(n ≧ 0) mint pochhammer_inv(int x, int n) { // verify : https://atcoder.jp/contests/agc070/tasks/agc070_c int x2 = x + n - 1; Assert(!(x <= 0 && 0 <= x2)); if (x > 0) { Assert(x2 <= n_max); return fac_inv[x2] * fac[x - 1]; } else { Assert(-x <= n_max); return (n & 1 ? -1 : 1) * fac_inv[-x] * fac[-x2 - 1]; } } }; // しょうがないので場合分けによる激遅コードを書く. // 初項を大量に集めるのが目的なので,多項式オーダーでさえあれば何でもいい. mint TLE(int n, int M) { Factorial_mint fm(n + M + 10); mint res = 0; if (n % 2 == 0) { repi(m, 0, M) { mint pres = res; repi(t, 0, M - m) repi(s, 0, M - m - t) repi(i, 0, n / 2 - 1) repi(j, 0, n / 2 - 1) { if ((s ^ t ^ m ^ M) & 1) continue; if (t > 0 && i == 0) continue; if (s > 0 && j == 0) continue; int wgt = (m == 0 ? 1 : 2); mint add = fm.bin(n - 1, i) * fm.bin(n - 1 - i, j); if (i > 0) add *= fm.bin(t - 1, i - 1); if (j > 0) add *= fm.bin(s - 1, j - 1); //dump("m,t,s,i,j:", m, t, s, i, j, ":", add); add *= wgt; res += add; } //dump(m, ":", res - pres); } } else { // m : median repi(m, 0, M) { mint pres = res; if (m == 0) { // パリティ一致 repi(t, 0, M - m) repi(s, 0, M - m - t) { if ((s ^ t ^ m ^ M) & 1) continue; repi(i, 0, n / 2) repi(j, 0, n / 2) { if (t > 0 && i == 0) continue; if (s > 0 && j == 0) continue; int wgt = 1; mint add = fm.bin(n - 1, i) * fm.bin(n - 1 - i, j); if (i > 0) add *= fm.bin(t - 1, i - 1); if (j > 0) add *= fm.bin(s - 1, j - 1); if (add == 0) continue; add *= wgt; dump("0,m,t,s,i,j:", m, t, s, i, j, ":", add); res += add; } } // パリティ不一致 // x : neg cnt, y : pos cnt repi(x, 0, n / 2) repi(y, 0, n / 2) { // All 1 から if (x <= y) { int M_rem = M - 1 - 2 * x - (n - 1 - x - y); // s : ad neg sum, t : ad pos sum repi(s, 0, M_rem) repi(t, 0, M_rem - s) { if ((1 ^ (2 * x) ^ (n - 1 - x - y) ^ s ^ t ^ M) & 1) continue; int wgt = 1; mint add = fm.bin(n - 1, x) * fm.bin(n - 1 - x, y); if (x > 0 || s > 0) add *= fm.bin(x + s - 1, s); if (y > 0 || t > 0) add *= fm.bin(y + t - 1, t); add *= wgt; if (add == 0) continue; dump("1,m,x,y,s,t:", m, x, y, s, t, ":", add); res += add; } } // All -1 から else { int M_rem = M - 1 - 2 * y - (n - 1 - x - y); // s : ad neg sum, t : ad pos sum repi(s, 0, M_rem) repi(t, 0, M_rem - s) { if ((1 ^ (2 * y) ^ (n - 1 - x - y) ^ s ^ t ^ M) & 1) continue; int wgt = 1; mint add = fm.bin(n - 1, x) * fm.bin(n - 1 - x, y); if (x > 0 || s > 0) add *= fm.bin(x + s - 1, s); if (y > 0 || t > 0) add *= fm.bin(y + t - 1, t); add *= wgt; if (add == 0) continue; dump("1,m,x,y,s,t:", m, x, y, s, t, ":", add); res += add; } } } } else { // パリティ一致 repi(t, 0, M - m) repi(s, 0, M - m - t) repi(i, 0, n / 2 - 1) repi(j, 0, n / 2) { if ((s ^ t ^ m ^ M) & 1) continue; if (t > 0 && i == 0) continue; if (s > 0 && j == 0) continue; int wgt = 2; mint add = fm.bin(n - 1, i) * fm.bin(n - 1 - i, j); if (i > 0) add *= fm.bin(t - 1, i - 1); if (j > 0) add *= fm.bin(s - 1, j - 1); add *= wgt; dump("0,m,t,s,i,j:", m, t, s, i, j, ":", add); res += add; } // パリティ不一致 // x : neg cnt, y : pos cnt repi(x, 0, n / 2 - 1) repi(y, 0, n / 2) { // All m+1 から if ((m - 1) + 2 * y + (n - 1 - x - y) >= (m + 1) + 2 * x + (n - 1 - x - y)) { int M_rem = M - (m + 1) - 2 * x - (n - 1 - x - y); // s : ad neg sum, t : ad pos sum repi(s, 0, M_rem) repi(t, 0, M_rem - s) { if (((m + 1) ^ (2 * x) ^ (n - 1 - x - y) ^ s ^ t ^ M) & 1) continue; int wgt = 2; mint add = fm.bin(n - 1, x) * fm.bin(n - 1 - x, y); if (x > 0 || s > 0) add *= fm.bin(x + s - 1, s); if (y > 0 || t > 0) add *= fm.bin(y + t - 1, t); add *= wgt; if (add == 0) continue; dump("1,m,x,y,s,t:", m, x, y, s, t, ":", add); res += add; } } // All m-1 から else { int M_rem = M - (m - 1) - 2 * y - (n - 1 - x - y); // s : ad neg sum, t : ad pos sum repi(s, 0, M_rem) repi(t, 0, M_rem - s) { if (((m + 1) ^ (2 * y) ^ (n - 1 - x - y) ^ s ^ t ^ M) & 1) continue; int wgt = 2; mint add = fm.bin(n - 1, x) * fm.bin(n - 1 - x, y); if (x > 0 || s > 0) add *= fm.bin(x + s - 1, s); if (y > 0 || t > 0) add *= fm.bin(y + t - 1, t); add *= wgt; if (add == 0) continue; dump("1,m,x,y,s,t:", m, x, y, s, t, ":", add); res += add; } } } } dump(m, ":", res - pres); } } return res; } void zikken2() { int N = 35; vvm tbl(N, vm(N)); repi(n, 1, N) { dump(n); repi(m, 1, N) { mute_dump = 1; tbl[n - 1][m - 1] = TLE(n, m); mute_dump = 0; } } dumpel(tbl); dump_math(tbl); exit(0); } /* (略) これを 2D P-recursive チェッカーにぶち込みコードを自動生成する. */ int main() { // input_from_file("input.txt"); // output_to_file("output.txt"); // zikken2(); int n, m; cin >> n >> m; vm dp(m + 1 + 10); auto D = [&](const mint& x, const mint& y) { return dp[y.val()]; }; auto P = [&](const mint& x, int n) { mint res = 1; rep(hoge, n) res *= x; return res; }; { vm dp2{ -1, 1, 2, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, \ 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70 }; dp2.resize(n + 1); auto D1 = [&](const mint& x) { return dp2[x.val()]; }; repi(i, 10, n) { mint nn = i; dp2[i] = -((nn * (241996577 + 252667810 * nn) * D1(-1 + nn)) / (241996577 + nn * (10671233 + 747332197 * nn))); } dp[1] = dp2[n]; } { vm dp2{ -1, 1, 3, 19, 27, 51, 73, 99, 129, 163, 201, 243, 289, 339, 393, 451, \ 513, 579, 649, 723, 801, 883, 969, 1059, 1153, 1251, 1353, 1459, \ 1569, 1683, 1801, 1923, 2049, 2179, 2313, 2451 }; dp2.resize(n + 1); auto D1 = [&](const mint& x) { return dp2[x.val()]; }; repi(i, 10, n) { mint nn = i; dp2[i] = ((6241921445 - 2 * nn * (4178823388 + nn * (-1975412017 + 350290987 * nn))) * D1(-2 + nn) + 5 * (75036767 + nn * (-287984418 + (369645089 - 175009936 * nn) * nn)) * D1(-1 + nn)) / (302844111 + nn * (25306763 + 5 * nn * (70295333 + 84873672 * nn))) ; } dp[2] = dp2[n]; } { vm dp2{ -1,1, 4, 37, 64, 180, 284, 476, 704, 996, 1360, 1804, 2336, 2964, 3696, \ 4540, 5504, 6596, 7824, 9196, 10720, 12404, 14256, 16284, 18496, \ 20900, 23504, 26316, 29344, 32596, 36080, 39804, 43776, 48004, 52496, \ 57260 }; dp2.resize(n + 1); auto D1 = [&](const mint& x) { return dp2[x.val()]; }; repi(i, 10, n) { mint nn = i; dp2[i] = ((10572523803 + nn * (-14072110253 + (5559864651 - 717795020 * nn) * nn)) * D1(-3 + nn) + (-944723011 + 2 * nn * (252299180 + 27 * (2242319 - 1730379 * nn) * nn)) * D1(-2 + nn) - (518869005 + 2 * nn * (70942705 + 22 * nn * (-474633 + 2185736 * nn))) * D1(-1 + nn)) / (266416062 + nn * (672390244 + nn * (11148766 + 92592137 * nn))); } dp[3] = dp2[n]; } { vm dp2{ -1,1, 5, 61, 125, 501, 835, 1765, 2875, 4645, 7001, 10165, 14305, \ 19605, 26265, 34501, 44545, 56645, 71065, 88085, 108001, 131125, \ 157785, 188325, 223105, 262501, 306905, 356725, 412385, 474325, \ 543001, 618885, 702465, 794245, 894745, 1004501 }; dp2.resize(n + 1); auto D1 = [&](const mint& x) { return dp2[x.val()]; }; repi(i, 10, n) { mint nn = i; dp2[i] = ((56078927807 + nn * (-42469256279 + (10710098461 - 900290529 * nn) * nn)) * D1(-4 + nn) + (12674231301 + nn * (-15836163660 + 7 * (883412886 - 113633911 * nn) * nn)) * D1(-3 + nn) + (5078220962 + nn * (-7777409982 + (4013704021 - 732186705 * nn) * nn)) * D1(-2 + nn) + (284705508 + nn * (-1097581829 + (419866223 - 176848856 * nn) * nn)) * D1(-1 + nn)) / (447371989 + 3 * nn * (149051219 + 2 * nn * (140390767 + 65872759 * nn))); } dp[4] = dp2[n]; } { vm dp2{ -1,1, 6, 91, 216, 1131, 2036, 5418, 9456, 17718, 29112, 46530, 71000, \ 104910, 150780, 211546, 290592, 391782, 519492, 678642, 874728, \ 1113854, 1402764, 1748874, 2160304, 2645910, 3215316, 3878946, \ 4648056, 5534766, 6552092, 7713978, 9035328, 10532038, 12221028, \ 14120274 }; dp2.resize(n + 1); auto D1 = [&](const mint& x) { return dp2[x.val()]; }; repi(i, 10, n) { mint nn = i; dp2[i] = ((35309978286 - 2 * nn * (14211248465 + nn * (-3823984464 + 350290987 * nn))) * D1(-4 + nn) + (20249816626 - 22 * nn * (1010155081 + nn * (-367316907 + 44751722 * nn))) * D1(-3 + nn) - (2919121016 + nn * (-2154886837 + nn * (507759257 + 17940144 * nn))) * D1(-2 + nn) - (122472762 + nn * (1295596213 + nn * (-1200927681 + 448328188 * nn))) * D1(-1 + nn)) / (223000650 + nn * (209968884 + nn * (622859097 + 848611831 * nn))); } dp[5] = dp2[n]; } { vm dp2{ -1,1, 7, 127, 343, 2221, 4347, 14407, 26411, 57799, 101941, 180775, \ 297381, 474215, 729905, 1092231, 1594369, 2276743, 3188017, 4386151, \ 5939521, 7928103, 10444721, 13596359, 17505537, 22311751, 28172977, \ 35267239, 43794241, 53977063, 66063921, 80329991, 97079297, \ 116646663, 139399729, 165741031 }; dp2.resize(n + 1); auto D1 = [&](const mint& x) { return dp2[x.val()]; }; repi(i, 10, n) { mint nn = i; dp2[i] = ((16502370821 + nn * (-10293327245 + nn * (950309559 + 416268756 * nn - 70878986 * P(nn, 2)))) * D1(-4 + nn) + (-11411285714 + nn * (12036659566 + nn * (-5112721194 + (1082798579 - 101831537 * nn) * nn))) * D1(-3 + nn) + (-13176691569 + nn * (24091766198 + nn * (-18067864821 + (6246361499 - 843416160 * nn) * nn))) * D1(-2 + nn) + (-1114833924 + nn * (3609184784 + nn * (-4838295358 + (3310044237 - 985718821 * nn) * nn))) * D1(-1 + nn)) / (6096411 + nn * (245074792 + nn * (485035896 + nn * (624843037 + 998154517 * nn)))); } dp[6] = dp2[n]; } { vm dp2{ -1,1, 8, 169, 512, 3951, 8408, 33839, 65024, 166344, 310472, 614680, \ 1081088, 1866280, 3066968, 4892536, 7579136, 11450248, 16915008, \ 24489176, 34814848, 48682472, 67055296, 91096376, 122198272, \ 162015560, 212500288, 275940504, 355001984, 452773288, 572814272, \ 719208184, 896617472, 110343425, 366389817, 671530577 }; dp2.resize(n + 1); auto D1 = [&](const mint& x) { return dp2[x.val()]; }; repi(i, 10, n) { mint nn = i; dp2[i] = ((-547664913480 + nn * (442369875428 + nn * (-133645175028 + (17912422693 - 900290529 * nn) * nn))) * D1(-5 + nn) + (-82296489515 + nn * (77220915100 + nn * (-27561693317 + (4460987639 - 280627680 * nn) * nn))) * D1(-4 + nn) + 3725289806 * D1(-3 + nn) - 3461901965 * D1(-2 + nn) + 321589940 * D1(-1 + nn) + nn * ((1937345240 + nn * (-4350832017 + 13 * (137149198 - 17631703 * nn) * nn)) * D1(-3 + nn) + (5835849431 + nn * (-4179027030 + (1282355363 - 167325254 * nn) * nn)) * D1(-2 + nn) - (1938520694 + nn * (-1113806974 + nn * (326675156 + 40426199 * nn))) * D1(-1 + nn))) / (843339770 + nn * (352707777 + nn * (257868593 + nn * (918765039 + 382118213 * nn)))); } dp[7] = dp2[n]; } dump(dp); repi(j, 8, m) { dump("j:", j); mint nn1 = n; mint nn2 = j; dp[j] = (-144430005 * D(nn1, -7 + nn2) - 216415076 * nn1 * D(nn1, -7 + nn2) - 446620024 * P(nn1, 2) * D(nn1, -7 + nn2) - 908063867 * P(nn1, 3) * D(nn1, -7 + nn2) - 636203135 * P(nn1, 4) * D(nn1, -7 + nn2) - 253961541 * P(nn1, 5) * D(nn1, -7 + nn2) - 436971793 * P(nn1, 6) * D(nn1, -7 + nn2) - 323605742 * P(nn1, 7) * D(nn1, -7 + nn2) - 665667817 * (-7 + nn2) * D(nn1, -7 + nn2) - 400637173 * nn1 * (-7 + nn2) * D(nn1, -7 + nn2) - 1327040 * P(nn1, 2) * (-7 + nn2) * D(nn1, -7 + nn2) - 89353563 * P(nn1, 3) * (-7 + nn2) * D(nn1, -7 + nn2) - 355324720 * P(nn1, 4) * (-7 + nn2) * D(nn1, -7 + nn2) - 738739420 * P(nn1, 5) * (-7 + nn2) * D(nn1, -7 + nn2) - 128367132 * P(nn1, 6) * (-7 + nn2) * D(nn1, -7 + nn2) - 29934491 * P(nn1, 7) * (-7 + nn2) * D(nn1, -7 + nn2) - 441070077 * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 886845420 * nn1 * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 519443155 * P(nn1, 2) * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 359083893 * P(nn1, 3) * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 256933829 * P(nn1, 4) * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 262614800 * P(nn1, 5) * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 488704387 * P(nn1, 6) * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 668639932 * P(nn1, 7) * P(-7 + nn2, 2) * D(nn1, -7 + nn2) - 50388878 * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 396651084 * nn1 * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 913858959 * P(nn1, 2) * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 34189177 * P(nn1, 3) * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 347170893 * P(nn1, 4) * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 453341832 * P(nn1, 5) * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 755800203 * P(nn1, 6) * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 146047018 * P(nn1, 7) * P(-7 + nn2, 3) * D(nn1, -7 + nn2) - 897546441 * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 984438621 * nn1 * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 366235687 * P(nn1, 2) * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 421093623 * P(nn1, 3) * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 126386599 * P(nn1, 4) * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 871497540 * P(nn1, 5) * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 617795399 * P(nn1, 6) * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 675548290 * P(nn1, 7) * P(-7 + nn2, 4) * D(nn1, -7 + nn2) - 952193716 * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 828061670 * nn1 * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 610251585 * P(nn1, 2) * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 153714458 * P(nn1, 3) * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 378339451 * P(nn1, 4) * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 175848165 * P(nn1, 5) * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 479230593 * P(nn1, 6) * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 495254619 * P(nn1, 7) * P(-7 + nn2, 5) * D(nn1, -7 + nn2) - 252226057 * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 599985943 * nn1 * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 634155919 * P(nn1, 2) * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 835348748 * P(nn1, 3) * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 243542407 * P(nn1, 4) * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 205722677 * P(nn1, 5) * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 780545486 * P(nn1, 6) * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 490642670 * P(nn1, 7) * P(-7 + nn2, 6) * D(nn1, -7 + nn2) - 505652567 * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 515587072 * nn1 * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 459247876 * P(nn1, 2) * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 912630003 * P(nn1, 3) * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 16299321 * P(nn1, 4) * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 801850271 * P(nn1, 5) * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 985309500 * P(nn1, 6) * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 907278724 * P(nn1, 7) * P(-7 + nn2, 7) * D(nn1, -7 + nn2) - 568422866 * P(-7 + nn2, 8) * D(nn1, -7 + nn2) - 236537839 * nn1 * P(-7 + nn2, 8) * D(nn1, -7 + nn2) - 408809229 * P(nn1, 2) * P(-7 + nn2, 8) * D(nn1, -7 + nn2) - 447826198 * P(nn1, 3) * P(-7 + nn2, 8) * D(nn1, -7 + nn2) - 294563885 * P(nn1, 4) * P(-7 + nn2, 8) * D(nn1, -7 + nn2) - 749818584 * P(nn1, 5) * P(-7 + nn2, 8) * D(nn1, -7 + nn2) - 814557441 * P(nn1, 6) * P(-7 + nn2, 8) * D(nn1, -7 + nn2) - 212163170 * D(nn1, -6 + nn2) - 276396063 * nn1 * D(nn1, -6 + nn2) - 410164760 * P(nn1, 2) * D(nn1, -6 + nn2) - 396288211 * P(nn1, 3) * D(nn1, -6 + nn2) - 740532215 * P(nn1, 4) * D(nn1, -6 + nn2) - 643822709 * P(nn1, 5) * D(nn1, -6 + nn2) - 51963797 * P(nn1, 6) * D(nn1, -6 + nn2) - 502744117 * P(nn1, 7) * D(nn1, -6 + nn2) - 159843557 * P(nn1, 8) * D(nn1, -6 + nn2) - 702614810 * (-6 + nn2) * D(nn1, -6 + nn2) - 931233514 * nn1 * (-6 + nn2) * D(nn1, -6 + nn2) - 878358019 * P(nn1, 2) * (-6 + nn2) * D(nn1, -6 + nn2) - 748693747 * P(nn1, 3) * (-6 + nn2) * D(nn1, -6 + nn2) - 939227494 * P(nn1, 4) * (-6 + nn2) * D(nn1, -6 + nn2) - 59203774 * P(nn1, 5) * (-6 + nn2) * D(nn1, -6 + nn2) - 242290594 * P(nn1, 6) * (-6 + nn2) * D(nn1, -6 + nn2) - 513717086 * P(nn1, 7) * (-6 + nn2) * D(nn1, -6 + nn2) - 464097743 * P(nn1, 8) * (-6 + nn2) * D(nn1, -6 + nn2) - 628040102 * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 882798013 * nn1 * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 788002463 * P(nn1, 2) * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 173763039 * P(nn1, 3) * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 274434342 * P(nn1, 4) * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 362488253 * P(nn1, 5) * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 506441307 * P(nn1, 6) * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 939410251 * P(nn1, 7) * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 811960987 * P(nn1, 8) * P(-6 + nn2, 2) * D(nn1, -6 + nn2) - 91931642 * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 692996366 * nn1 * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 394254775 * P(nn1, 2) * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 739052908 * P(nn1, 3) * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 487223761 * P(nn1, 4) * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 504331817 * P(nn1, 5) * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 225977604 * P(nn1, 6) * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 272476339 * P(nn1, 7) * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 864642660 * P(nn1, 8) * P(-6 + nn2, 3) * D(nn1, -6 + nn2) - 5518272 * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 964634095 * nn1 * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 167567624 * P(nn1, 2) * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 74368338 * P(nn1, 3) * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 259453559 * P(nn1, 4) * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 600397750 * P(nn1, 5) * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 647561078 * P(nn1, 6) * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 149087715 * P(nn1, 7) * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 743677528 * P(nn1, 8) * P(-6 + nn2, 4) * D(nn1, -6 + nn2) - 45988374 * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 189915165 * nn1 * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 324079259 * P(nn1, 2) * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 356439445 * P(nn1, 3) * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 453175481 * P(nn1, 4) * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 594569851 * P(nn1, 5) * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 461646328 * P(nn1, 6) * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 835321233 * P(nn1, 7) * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 464825854 * P(nn1, 8) * P(-6 + nn2, 5) * D(nn1, -6 + nn2) - 109563941 * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 956452217 * nn1 * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 384768170 * P(nn1, 2) * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 334899215 * P(nn1, 3) * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 592729515 * P(nn1, 4) * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 647533833 * P(nn1, 5) * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 11242067 * P(nn1, 6) * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 871778538 * P(nn1, 7) * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 814557441 * P(nn1, 8) * P(-6 + nn2, 6) * D(nn1, -6 + nn2) - 134522381 * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 941136245 * nn1 * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 937308444 * P(nn1, 2) * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 798469217 * P(nn1, 3) * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 249568794 * P(nn1, 4) * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 195530305 * P(nn1, 5) * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 566146359 * P(nn1, 6) * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 450627664 * P(nn1, 7) * P(-6 + nn2, 7) * D(nn1, -6 + nn2) - 894556519 * P(-6 + nn2, 8) * D(nn1, -6 + nn2) - 232339535 * nn1 * P(-6 + nn2, 8) * D(nn1, -6 + nn2) - 208293107 * P(nn1, 2) * P(-6 + nn2, 8) * D(nn1, -6 + nn2) - 970416302 * P(nn1, 3) * P(-6 + nn2, 8) * D(nn1, -6 + nn2) - 44605545 * P(nn1, 4) * P(-6 + nn2, 8) * D(nn1, -6 + nn2) - 700727764 * P(nn1, 5) * P(-6 + nn2, 8) * D(nn1, -6 + nn2) - 13910710 * P(nn1, 6) * P(-6 + nn2, 8) * D(nn1, -6 + nn2) - 911389573 * D(nn1, -5 + nn2) - 402748862 * nn1 * D(nn1, -5 + nn2) - 728522220 * P(nn1, 2) * D(nn1, -5 + nn2) - 470240993 * P(nn1, 3) * D(nn1, -5 + nn2) - 634510467 * P(nn1, 4) * D(nn1, -5 + nn2) - 270050607 * P(nn1, 5) * D(nn1, -5 + nn2) - 373903270 * P(nn1, 6) * D(nn1, -5 + nn2) - 64824116 * P(nn1, 7) * D(nn1, -5 + nn2) - 744742945 * P(nn1, 8) * D(nn1, -5 + nn2) - 546052138 * (-5 + nn2) * D(nn1, -5 + nn2) - 169299290 * nn1 * (-5 + nn2) * D(nn1, -5 + nn2) - 697321211 * P(nn1, 2) * (-5 + nn2) * D(nn1, -5 + nn2) - 450224325 * P(nn1, 3) * (-5 + nn2) * D(nn1, -5 + nn2) - 276464487 * P(nn1, 4) * (-5 + nn2) * D(nn1, -5 + nn2) - 80190956 * P(nn1, 5) * (-5 + nn2) * D(nn1, -5 + nn2) - 804187326 * P(nn1, 6) * (-5 + nn2) * D(nn1, -5 + nn2) - 691461712 * P(nn1, 7) * (-5 + nn2) * D(nn1, -5 + nn2) - 838241642 * P(nn1, 8) * (-5 + nn2) * D(nn1, -5 + nn2) - 737294466 * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 948426785 * nn1 * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 222997109 * P(nn1, 2) * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 171855193 * P(nn1, 3) * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 252014412 * P(nn1, 4) * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 124066246 * P(nn1, 5) * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 48408816 * P(nn1, 6) * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 245019072 * P(nn1, 7) * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 988239768 * P(nn1, 8) * P(-5 + nn2, 2) * D(nn1, -5 + nn2) - 737475277 * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 246611724 * nn1 * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 90055700 * P(nn1, 2) * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 948641566 * P(nn1, 3) * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 116047725 * P(nn1, 4) * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 976721235 * P(nn1, 5) * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 997193066 * P(nn1, 6) * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 989199117 * P(nn1, 7) * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 439679549 * P(nn1, 8) * P(-5 + nn2, 3) * D(nn1, -5 + nn2) - 368544723 * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 385786629 * nn1 * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 652757919 * P(nn1, 2) * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 209020764 * P(nn1, 3) * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 835467002 * P(nn1, 4) * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 578191992 * P(nn1, 5) * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 613169638 * P(nn1, 6) * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 787362170 * P(nn1, 7) * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 286898389 * P(nn1, 8) * P(-5 + nn2, 4) * D(nn1, -5 + nn2) - 991444756 * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 762097650 * nn1 * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 572340730 * P(nn1, 2) * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 359476580 * P(nn1, 3) * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 581993109 * P(nn1, 4) * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 648183235 * P(nn1, 5) * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 720171463 * P(nn1, 6) * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 923892254 * P(nn1, 7) * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 982182125 * P(nn1, 8) * P(-5 + nn2, 5) * D(nn1, -5 + nn2) - 85761667 * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 136931936 * nn1 * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 706704822 * P(nn1, 2) * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 798347431 * P(nn1, 3) * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 352344207 * P(nn1, 4) * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 852654967 * P(nn1, 5) * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 730747787 * P(nn1, 6) * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 402022672 * P(nn1, 7) * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 643025585 * P(nn1, 8) * P(-5 + nn2, 6) * D(nn1, -5 + nn2) - 595375707 * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 345269243 * nn1 * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 370816658 * P(nn1, 2) * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 663659389 * P(nn1, 3) * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 78406552 * P(nn1, 4) * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 282012604 * P(nn1, 5) * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 567696461 * P(nn1, 6) * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 975858854 * P(nn1, 7) * P(-5 + nn2, 7) * D(nn1, -5 + nn2) - 410053402 * P(-5 + nn2, 8) * D(nn1, -5 + nn2) - 896669492 * nn1 * P(-5 + nn2, 8) * D(nn1, -5 + nn2) - 730523344 * P(nn1, 2) * P(-5 + nn2, 8) * D(nn1, -5 + nn2) - 53581441 * P(nn1, 3) * P(-5 + nn2, 8) * D(nn1, -5 + nn2) - 482490819 * P(nn1, 4) * P(-5 + nn2, 8) * D(nn1, -5 + nn2) - 385565675 * P(nn1, 5) * P(-5 + nn2, 8) * D(nn1, -5 + nn2) - 239138566 * P(nn1, 6) * P(-5 + nn2, 8) * D(nn1, -5 + nn2) - 48250917 * D(nn1, -4 + nn2) - 35404260 * nn1 * D(nn1, -4 + nn2) - 731463138 * P(nn1, 2) * D(nn1, -4 + nn2) - 809695892 * P(nn1, 3) * D(nn1, -4 + nn2) - 304504424 * P(nn1, 4) * D(nn1, -4 + nn2) - 328810199 * P(nn1, 5) * D(nn1, -4 + nn2) - 679159408 * P(nn1, 6) * D(nn1, -4 + nn2) - 376288184 * P(nn1, 7) * D(nn1, -4 + nn2) - 815618752 * P(nn1, 8) * D(nn1, -4 + nn2) - 256223134 * (-4 + nn2) * D(nn1, -4 + nn2) - 721405322 * nn1 * (-4 + nn2) * D(nn1, -4 + nn2) - 26991695 * P(nn1, 2) * (-4 + nn2) * D(nn1, -4 + nn2) - 40690975 * P(nn1, 3) * (-4 + nn2) * D(nn1, -4 + nn2) - 714494961 * P(nn1, 4) * (-4 + nn2) * D(nn1, -4 + nn2) - 673724881 * P(nn1, 5) * (-4 + nn2) * D(nn1, -4 + nn2) - 30640858 * P(nn1, 6) * (-4 + nn2) * D(nn1, -4 + nn2) - 666005203 * P(nn1, 7) * (-4 + nn2) * D(nn1, -4 + nn2) - 480558686 * P(nn1, 8) * (-4 + nn2) * D(nn1, -4 + nn2) - 693349698 * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 936558362 * nn1 * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 590787540 * P(nn1, 2) * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 997338666 * P(nn1, 3) * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 373169871 * P(nn1, 4) * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 351559369 * P(nn1, 5) * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 961503160 * P(nn1, 6) * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 228289514 * P(nn1, 7) * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 843909816 * P(nn1, 8) * P(-4 + nn2, 2) * D(nn1, -4 + nn2) - 829164232 * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 474995664 * nn1 * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 550411924 * P(nn1, 2) * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 205653357 * P(nn1, 3) * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 759106663 * P(nn1, 4) * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 438852564 * P(nn1, 5) * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 957885039 * P(nn1, 6) * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 468897144 * P(nn1, 7) * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 477281593 * P(nn1, 8) * P(-4 + nn2, 3) * D(nn1, -4 + nn2) - 582644931 * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 669605666 * nn1 * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 365176523 * P(nn1, 2) * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 300577738 * P(nn1, 3) * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 697420249 * P(nn1, 4) * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 281469459 * P(nn1, 5) * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 616330568 * P(nn1, 6) * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 69679837 * P(nn1, 7) * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 232508741 * P(nn1, 8) * P(-4 + nn2, 4) * D(nn1, -4 + nn2) - 248619697 * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 910485554 * nn1 * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 238281847 * P(nn1, 2) * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 613873649 * P(nn1, 3) * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 398687926 * P(nn1, 4) * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 409979739 * P(nn1, 5) * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 73851984 * P(nn1, 6) * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 32231308 * P(nn1, 7) * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 931217030 * P(nn1, 8) * P(-4 + nn2, 5) * D(nn1, -4 + nn2) - 635569671 * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 771727978 * nn1 * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 891272822 * P(nn1, 2) * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 700834467 * P(nn1, 3) * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 913551068 * P(nn1, 4) * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 261710117 * P(nn1, 5) * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 210917466 * P(nn1, 6) * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 463671910 * P(nn1, 7) * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 710632295 * P(nn1, 8) * P(-4 + nn2, 6) * D(nn1, -4 + nn2) - 762958425 * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 408405882 * nn1 * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 27655584 * P(nn1, 2) * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 38051839 * P(nn1, 3) * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 398255910 * P(nn1, 4) * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 615167102 * P(nn1, 5) * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 977982712 * P(nn1, 6) * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 362638161 * P(nn1, 7) * P(-4 + nn2, 7) * D(nn1, -4 + nn2) - 807178499 * P(-4 + nn2, 8) * D(nn1, -4 + nn2) - 302761180 * nn1 * P(-4 + nn2, 8) * D(nn1, -4 + nn2) - 859250672 * P(nn1, 2) * P(-4 + nn2, 8) * D(nn1, -4 + nn2) - 831212218 * P(nn1, 3) * P(-4 + nn2, 8) * D(nn1, -4 + nn2) - 267110269 * P(nn1, 4) * P(-4 + nn2, 8) * D(nn1, -4 + nn2) - 699764803 * P(nn1, 5) * P(-4 + nn2, 8) * D(nn1, -4 + nn2) - 375278902 * P(nn1, 6) * P(-4 + nn2, 8) * D(nn1, -4 + nn2) - 563276852 * D(nn1, -3 + nn2) - 897354785 * nn1 * D(nn1, -3 + nn2) - 52935806 * P(nn1, 2) * D(nn1, -3 + nn2) - 527232639 * P(nn1, 3) * D(nn1, -3 + nn2) - 114029617 * P(nn1, 4) * D(nn1, -3 + nn2) - 372632250 * P(nn1, 5) * D(nn1, -3 + nn2) - 350926868 * P(nn1, 6) * D(nn1, -3 + nn2) - 776918923 * P(nn1, 7) * D(nn1, -3 + nn2) - 161468600 * P(nn1, 8) * D(nn1, -3 + nn2) - 245025540 * (-3 + nn2) * D(nn1, -3 + nn2) - 437548870 * nn1 * (-3 + nn2) * D(nn1, -3 + nn2) - 802037537 * P(nn1, 2) * (-3 + nn2) * D(nn1, -3 + nn2) - 814732071 * P(nn1, 3) * (-3 + nn2) * D(nn1, -3 + nn2) - 279817347 * P(nn1, 4) * (-3 + nn2) * D(nn1, -3 + nn2) - 245767615 * P(nn1, 5) * (-3 + nn2) * D(nn1, -3 + nn2) - 856041524 * P(nn1, 6) * (-3 + nn2) * D(nn1, -3 + nn2) - 298983813 * P(nn1, 7) * (-3 + nn2) * D(nn1, -3 + nn2) - 720515668 * P(nn1, 8) * (-3 + nn2) * D(nn1, -3 + nn2) - 446712644 * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 919410344 * nn1 * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 635667938 * P(nn1, 2) * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 4738094 * P(nn1, 3) * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 484130295 * P(nn1, 4) * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 662290948 * P(nn1, 5) * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 806981155 * P(nn1, 6) * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 877621108 * P(nn1, 7) * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 920843906 * P(nn1, 8) * P(-3 + nn2, 2) * D(nn1, -3 + nn2) - 202987667 * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 948367878 * nn1 * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 549485273 * P(nn1, 2) * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 205626116 * P(nn1, 3) * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 24157115 * P(nn1, 4) * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 836250567 * P(nn1, 5) * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 543951856 * P(nn1, 6) * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 627480654 * P(nn1, 7) * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 702533688 * P(nn1, 8) * P(-3 + nn2, 3) * D(nn1, -3 + nn2) - 246469309 * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 266937923 * nn1 * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 760755054 * P(nn1, 2) * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 51519372 * P(nn1, 3) * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 633540727 * P(nn1, 4) * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 583497274 * P(nn1, 5) * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 348039361 * P(nn1, 6) * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 131289672 * P(nn1, 7) * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 426983429 * P(nn1, 8) * P(-3 + nn2, 4) * D(nn1, -3 + nn2) - 242599789 * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 971906152 * nn1 * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 736845060 * P(nn1, 2) * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 766429646 * P(nn1, 3) * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 232344515 * P(nn1, 4) * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 369301786 * P(nn1, 5) * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 142050164 * P(nn1, 6) * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 376118819 * P(nn1, 7) * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 281759377 * P(nn1, 8) * P(-3 + nn2, 5) * D(nn1, -3 + nn2) - 238484788 * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 632396610 * nn1 * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 547673127 * P(nn1, 2) * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 120200907 * P(nn1, 3) * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 951606046 * P(nn1, 4) * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 871345109 * P(nn1, 5) * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 312552529 * P(nn1, 6) * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 52974491 * P(nn1, 7) * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 153517900 * P(nn1, 8) * P(-3 + nn2, 6) * D(nn1, -3 + nn2) - 377869612 * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 66475437 * nn1 * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 794395518 * P(nn1, 2) * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 568762957 * P(nn1, 3) * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 48075570 * P(nn1, 4) * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 829895690 * P(nn1, 5) * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 851598622 * P(nn1, 6) * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 58739951 * P(nn1, 7) * P(-3 + nn2, 7) * D(nn1, -3 + nn2) - 41433471 * P(-3 + nn2, 8) * D(nn1, -3 + nn2) - 13447559 * nn1 * P(-3 + nn2, 8) * D(nn1, -3 + nn2) - 321601466 * P(nn1, 2) * P(-3 + nn2, 8) * D(nn1, -3 + nn2) - 44698154 * P(nn1, 3) * P(-3 + nn2, 8) * D(nn1, -3 + nn2) - 762843488 * P(nn1, 4) * P(-3 + nn2, 8) * D(nn1, -3 + nn2) - 918729316 * P(nn1, 5) * P(-3 + nn2, 8) * D(nn1, -3 + nn2) - 674950251 * P(nn1, 6) * P(-3 + nn2, 8) * D(nn1, -3 + nn2) - 408950183 * D(nn1, -2 + nn2) - 576753805 * nn1 * D(nn1, -2 + nn2) - 243158941 * P(nn1, 2) * D(nn1, -2 + nn2) - 692169556 * P(nn1, 3) * D(nn1, -2 + nn2) - 528713032 * P(nn1, 4) * D(nn1, -2 + nn2) - 316205969 * P(nn1, 5) * D(nn1, -2 + nn2) - 716254625 * P(nn1, 6) * D(nn1, -2 + nn2) - 197047635 * P(nn1, 7) * D(nn1, -2 + nn2) - 505027964 * P(nn1, 8) * D(nn1, -2 + nn2) - 791126146 * (-2 + nn2) * D(nn1, -2 + nn2) - 869103684 * nn1 * (-2 + nn2) * D(nn1, -2 + nn2) - 843075135 * P(nn1, 2) * (-2 + nn2) * D(nn1, -2 + nn2) - 785294822 * P(nn1, 3) * (-2 + nn2) * D(nn1, -2 + nn2) - 78406421 * P(nn1, 4) * (-2 + nn2) * D(nn1, -2 + nn2) - 937092169 * P(nn1, 5) * (-2 + nn2) * D(nn1, -2 + nn2) - 152707231 * P(nn1, 6) * (-2 + nn2) * D(nn1, -2 + nn2) - 426338025 * P(nn1, 7) * (-2 + nn2) * D(nn1, -2 + nn2) - 952174770 * P(nn1, 8) * (-2 + nn2) * D(nn1, -2 + nn2) - 507631917 * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 334154927 * nn1 * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 491723417 * P(nn1, 2) * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 208361104 * P(nn1, 3) * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 974758520 * P(nn1, 4) * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 707847745 * P(nn1, 5) * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 148290921 * P(nn1, 6) * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 256391120 * P(nn1, 7) * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 295568352 * P(nn1, 8) * P(-2 + nn2, 2) * D(nn1, -2 + nn2) - 310822351 * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 276130138 * nn1 * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 444714860 * P(nn1, 2) * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 569793817 * P(nn1, 3) * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 832161094 * P(nn1, 4) * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 834039703 * P(nn1, 5) * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 145048427 * P(nn1, 6) * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 73799201 * P(nn1, 7) * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 156062539 * P(nn1, 8) * P(-2 + nn2, 3) * D(nn1, -2 + nn2) - 92475919 * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 145500597 * nn1 * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 157993556 * P(nn1, 2) * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 872646250 * P(nn1, 3) * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 86837944 * P(nn1, 4) * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 648306931 * P(nn1, 5) * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 565698171 * P(nn1, 6) * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 568746860 * P(nn1, 7) * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 101590862 * P(nn1, 8) * P(-2 + nn2, 4) * D(nn1, -2 + nn2) - 512802597 * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 285621897 * nn1 * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 669143306 * P(nn1, 2) * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 593382554 * P(nn1, 3) * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 521250255 * P(nn1, 4) * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 562359592 * P(nn1, 5) * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 61066374 * P(nn1, 6) * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 336853720 * P(nn1, 7) * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 408760000 * P(nn1, 8) * P(-2 + nn2, 5) * D(nn1, -2 + nn2) - 220528004 * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 109423849 * nn1 * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 691890030 * P(nn1, 2) * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 134982150 * P(nn1, 3) * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 801687566 * P(nn1, 4) * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 119118545 * P(nn1, 5) * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 428163828 * P(nn1, 6) * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 803991185 * P(nn1, 7) * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 271353756 * P(nn1, 8) * P(-2 + nn2, 6) * D(nn1, -2 + nn2) - 358550917 * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 249269013 * nn1 * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 597165230 * P(nn1, 2) * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 564697602 * P(nn1, 3) * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 393261341 * P(nn1, 4) * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 157634854 * P(nn1, 5) * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 344913890 * P(nn1, 6) * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 380533545 * P(nn1, 7) * P(-2 + nn2, 7) * D(nn1, -2 + nn2) - 135164621 * P(-2 + nn2, 8) * D(nn1, -2 + nn2) - 181059003 * nn1 * P(-2 + nn2, 8) * D(nn1, -2 + nn2) - 647543536 * P(nn1, 2) * P(-2 + nn2, 8) * D(nn1, -2 + nn2) - 930987077 * P(nn1, 3) * P(-2 + nn2, 8) * D(nn1, -2 + nn2) - 720446074 * P(nn1, 4) * P(-2 + nn2, 8) * D(nn1, -2 + nn2) - 558970740 * P(nn1, 5) * P(-2 + nn2, 8) * D(nn1, -2 + nn2) - 610810395 * P(nn1, 6) * P(-2 + nn2, 8) * D(nn1, -2 + nn2) - 198030922 * nn1 * D(nn1, -1 + nn2) - 622592013 * P(nn1, 2) * D(nn1, -1 + nn2) - 165153083 * P(nn1, 3) * D(nn1, -1 + nn2) - 992196345 * P(nn1, 4) * D(nn1, -1 + nn2) - 883301972 * P(nn1, 5) * D(nn1, -1 + nn2) - 904102909 * P(nn1, 6) * D(nn1, -1 + nn2) - 174019352 * P(nn1, 7) * D(nn1, -1 + nn2) - 60603432 * P(nn1, 8) * D(nn1, -1 + nn2) - 53509186 * nn1 * (-1 + nn2) * D(nn1, -1 + nn2) - 240644020 * P(nn1, 2) * (-1 + nn2) * D(nn1, -1 + nn2) - 201448606 * P(nn1, 3) * (-1 + nn2) * D(nn1, -1 + nn2) - 445339206 * P(nn1, 4) * (-1 + nn2) * D(nn1, -1 + nn2) - 574805161 * P(nn1, 5) * (-1 + nn2) * D(nn1, -1 + nn2) - 387094544 * P(nn1, 6) * (-1 + nn2) * D(nn1, -1 + nn2) - 382410631 * P(nn1, 7) * (-1 + nn2) * D(nn1, -1 + nn2) - 150824221 * P(nn1, 8) * (-1 + nn2) * D(nn1, -1 + nn2) - 57400974 * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 908667359 * nn1 * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 329866475 * P(nn1, 2) * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 255611603 * P(nn1, 3) * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 946931707 * P(nn1, 4) * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 167340127 * P(nn1, 5) * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 586238635 * P(nn1, 6) * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 129572191 * P(nn1, 7) * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 217914152 * P(nn1, 8) * P(-1 + nn2, 2) * D(nn1, -1 + nn2) - 766049577 * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 127699122 * nn1 * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 156501526 * P(nn1, 2) * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 736980825 * P(nn1, 3) * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 651423646 * P(nn1, 4) * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 393941308 * P(nn1, 5) * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 186564992 * P(nn1, 6) * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 522659034 * P(nn1, 7) * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 49584175 * P(nn1, 8) * P(-1 + nn2, 3) * D(nn1, -1 + nn2) - 508189311 * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 27216384 * nn1 * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 355659662 * P(nn1, 2) * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 508956423 * P(nn1, 3) * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 753153037 * P(nn1, 4) * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 671557326 * P(nn1, 5) * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 828203423 * P(nn1, 6) * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 380782471 * P(nn1, 7) * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 119920264 * P(nn1, 8) * P(-1 + nn2, 4) * D(nn1, -1 + nn2) - 589892228 * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 747634360 * nn1 * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 347024558 * P(nn1, 2) * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 956322746 * P(nn1, 3) * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 376959810 * P(nn1, 4) * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 155384607 * P(nn1, 5) * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 786794273 * P(nn1, 6) * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 729962623 * P(nn1, 7) * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 959463300 * P(nn1, 8) * P(-1 + nn2, 5) * D(nn1, -1 + nn2) - 306912923 * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 567088285 * nn1 * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 889630317 * P(nn1, 2) * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 255860906 * P(nn1, 3) * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 67528540 * P(nn1, 4) * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 73697736 * P(nn1, 5) * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 403768678 * P(nn1, 6) * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 731291389 * P(nn1, 7) * P(-1 + nn2, 6) * D(nn1, -1 + nn2) - 590043809 * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 201451224 * nn1 * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 487952997 * P(nn1, 2) * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 762229944 * P(nn1, 3) * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 650807527 * P(nn1, 4) * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 892270176 * P(nn1, 5) * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 267157548 * P(nn1, 6) * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 864323129 * P(nn1, 7) * P(-1 + nn2, 7) * D(nn1, -1 + nn2) - 980090275 * P(-1 + nn2, 8) * D(nn1, -1 + nn2) - 853345124 * nn1 * P(-1 + nn2, 8) * D(nn1, -1 + nn2) - 539065975 * P(nn1, 2) * P(-1 + nn2, 8) * D(nn1, -1 + nn2) - 453894214 * P(nn1, 3) * P(-1 + nn2, 8) * D(nn1, -1 + nn2) - 460101822 * P(nn1, 4) * P(-1 + nn2, 8) * D(nn1, -1 + nn2) - 945886446 * P(nn1, 5) * P(-1 + nn2, 8) * D(nn1, -1 + nn2) - 271353756 * P(nn1, 6) * P(-1 + nn2, 8) * D(nn1, -1 + nn2)) / (736836671 * P(nn1, 2) * nn2 + 378302909 * P(nn1, 3) * nn2 + 623281726 * P(nn1, 4) * nn2 + 440854560 * P(nn1, 5) * nn2 + 653401424 * P(nn1, 6) * nn2 + 380716924 * P(nn1, 7) * nn2 + 789490008 * nn1 * P(nn2, 2) + 908592554 * P(nn1, 2) * P(nn2, 2) + 43818806 * P(nn1, 3) * P(nn2, 2) + 295776140 * P(nn1, 4) * P(nn2, 2) + 7799583 * P(nn1, 5) * P(nn2, 2) + 896379344 * P(nn1, 6) * P(nn2, 2) + 909308078 * P(nn1, 7) * P(nn2, 2) + 473673335 * P(nn2, 3) + 626102017 * nn1 * P(nn2, 3) + 956932586 * P(nn1, 2) * P(nn2, 3) + 8087785 * P(nn1, 3) * P(nn2, 3) + 500765857 * P(nn1, 4) * P(nn2, 3) + 502794137 * P(nn1, 5) * P(nn2, 3) + 124588489 * P(nn1, 6) * P(nn2, 3) + 902974870 * P(nn1, 7) * P(nn2, 3) + 87002534 * P(nn2, 4) + 473244801 * nn1 * P(nn2, 4) + 592215130 * P(nn1, 2) * P(nn2, 4) + 488361124 * P(nn1, 3) * P(nn2, 4) + 537148126 * P(nn1, 4) * P(nn2, 4) + 626950283 * P(nn1, 5) * P(nn2, 4) + 301596489 * P(nn1, 6) * P(nn2, 4) + 917731979 * P(nn1, 7) * P(nn2, 4) + 902722102 * P(nn2, 5) + 63606795 * nn1 * P(nn2, 5) + 994631227 * P(nn1, 2) * P(nn2, 5) + 629610308 * P(nn1, 3) * P(nn2, 5) + 233017749 * P(nn1, 4) * P(nn2, 5) + 583820560 * P(nn1, 5) * P(nn2, 5) + 30004898 * P(nn1, 6) * P(nn2, 5) + 338698104 * P(nn1, 7) * P(nn2, 5) + 599459604 * P(nn2, 6) + 680014203 * nn1 * P(nn2, 6) + 617844909 * P(nn1, 2) * P(nn2, 6) + 496837412 * P(nn1, 3) * P(nn2, 6) + 235196319 * P(nn1, 4) * P(nn2, 6) + 619553714 * P(nn1, 5) * P(nn2, 6) + 467824758 * P(nn1, 6) * P(nn2, 6) + 520268357 * P(nn1, 7) * P(nn2, 6) + 675026610 * P(nn2, 7) + 272405905 * nn1 * P(nn2, 7) + 325457721 * P(nn1, 2) * P(nn2, 7) + 691499084 * P(nn1, 3) * P(nn2, 7) + 165324999 * P(nn1, 4) * P(nn2, 7) + 225639026 * P(nn1, 5) * P(nn2, 7) + 439194943 * P(nn1, 6) * P(nn2, 7) + 163100375 * P(nn2, 8) + 283840289 * nn1 * P(nn2, 8) + 284912699 * P(nn1, 2) * P(nn2, 8) + 267384424 * P(nn1, 3) * P(nn2, 8) + 967838126 * P(nn1, 4) * P(nn2, 8) + 40536707 * P(nn1, 5) * P(nn2, 8)); } EXIT(dp[m]); // 0 除算でしんでる }