結果
| 問題 | No.1685 One by One |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-07-10 17:25:52 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.90.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 62,243 bytes |
| 記録 | |
| コンパイル時間 | 12,867 ms |
| コンパイル使用メモリ | 921,320 KB |
| 実行使用メモリ | 9,412 KB |
| 最終ジャッジ日時 | 2026-07-13 02:39:48 |
| 合計ジャッジ時間 | 16,948 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 RE * 2 |
| other | AC * 19 WA * 4 RE * 23 |
ソースコード
#ifndef HIDDEN_IN_VS // 折りたたみ用
// 警告の抑制
#define _CRT_SECURE_NO_WARNINGS
// ライブラリの読み込み
#include <bits/stdc++.h>
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<int, int>; using pll = pair<ll, ll>; using pil = pair<int, ll>; using pli = pair<ll, int>;
using vi = vector<int>; using vvi = vector<vi>; using vvvi = vector<vvi>; using vvvvi = vector<vvvi>;
using vl = vector<ll>; using vvl = vector<vl>; using vvvl = vector<vvl>; using vvvvl = vector<vvvl>;
using vb = vector<bool>; using vvb = vector<vb>; using vvvb = vector<vvb>;
using vc = vector<char>; using vvc = vector<vc>; using vvvc = vector<vvc>;
using vd = vector<double>; using vvd = vector<vd>; using vvvd = vector<vvd>;
template <class T> using priority_queue_rev = priority_queue<T, vector<T>, greater<T>>;
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 <class T> inline ll powi(T n, int k) { ll v = 1; rep(i, k) v *= n; return v; }
template <class T> inline bool chmax(T& M, const T& x) { if (M < x) { M = x; return true; } return false; } // 最大値を更新(更新されたら true を返す)
template <class T> inline bool chmin(T& m, const T& x) { if (m > x) { m = x; return true; } return false; } // 最小値を更新(更新されたら true を返す)
template <class T> inline T getb(T set, int i) { return (set >> i) & T(1); }
template <class T> inline T smod(T n, T m) { n %= m; if (n < 0) n += m; return n; } // 非負mod
// 演算子オーバーロード
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p) { is >> p.first >> p.second; return is; }
template <class T> inline istream& operator>>(istream& is, vector<T>& v) { repea(x, v) is >> x; return is; }
template <class T> inline vector<T>& operator--(vector<T>& v) { repea(x, v) --x; return v; }
template <class T> inline vector<T>& operator++(vector<T>& v) { repea(x, v) ++x; return v; }
#endif // 折りたたみ用
#if __has_include(<atcoder/all>)
#include <atcoder/all>
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<mint>; using vvm = vector<vm>; using vvvm = vector<vvm>; using vvvvm = vector<vvvm>; using pim = pair<int, mint>;
#endif
#ifdef _MSC_VER // 手元環境(Visual Studio)
#include "local.hpp"
#else // 提出用(gcc)
int mute_dump = 0;
int frac_print = 0;
#if __has_include(<atcoder/all>)
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 除算でしんでる
}