#include #include #include #include #include #include #include #include #include #include #include #include #define vll vector #define vvv vector #define vvi vector > #define vvl vector > #define vv(a, b, c, d) vector >(a, vector(b, c)) #define vvvl(a, b, c, d) vector(a, vvl(b, vll (c, d))); #define rep(c, a, b) for(ll c=a;c> n >> p; ll P = 1000000007; vll a(n, 0), s(n, 0); a[0] = 0, a[1] = 1; rep(i, 2, n) a[i] = ((p*a[i-1])%P + a[i-2])%P; re(i, n) s[i] = ((i==0?0:s[i-1]) + a[i])%P; ll ans = 0; re(i, n){ ans = (ans + (a[i]*s[i])%P)%P; } std::cout << ans << '\n'; return 0; }