#include #include #pragma warning(disable:4996) typedef long long ll; const long long MOD = 1000000007; using namespace std; int main(int argc, char* argv[]) { int n,p; scanf("%d%d", &n, &p); ll sum1=0, sum2=0; vector a(n+1); int i; for(i=1; i<=n; i++) { if(i==1) a[i]=0; else if(i==2) a[i]=1; else a[i]=(p*a[i-1]+a[i-2])%MOD; sum1=(sum1+a[i])%MOD; sum2=(sum2+a[i]*a[i])%MOD; } ll ans = (sum1*sum1 + sum2)%MOD; ans = (ans%2==0? ans/2: (ans+MOD)/2); printf("%lld\n", ans); return 0; }